| Autor |
Beitrag |
en!gma
      
Beiträge: 378
win xp
delphi 7.0
|
Verfasst: Mi 06.08.08 09:01
hi.
also ich habe folgendes problem:
ich habe ein programm, welches nicht für niedrige auflösungen programmiert wurde.
als ich es nun auf meinem eee starten wollte, fehlte dort einfach die scrollbar und das programm wurde abgeschnitten.
keine möglichkeit an den unteren teil des programms zu kommen.
habe auch schon bei der hotline angerufen und nachgefragt, ob ich etwas falsch mache oder es eine versteckte option gibt.
aber es geht einfach nicht.
daher dachte ich mir ich könnte so ein programm schreiben:
ich habe eine form und implementiere einfach das komplette programm in diese form, nur dass ich halt eine scrollbar mit in dem fenster hätte.
nachteil wäre wohl dabei, dass ich 2 leisten oben hätte und der scrollbalken auch über das dropdown menü gehen würde,
aber das würde mich nicht großartig stören.
also, würde das überhaupt gehen was ich vorhabe?
oder habt ihr andere vorschläge wie man das problem lösen könnte?
mfg
en!gma
|
|
en!gma 
      
Beiträge: 378
win xp
delphi 7.0
|
Verfasst: Do 07.08.08 12:49
niemand eine idee?
möchte ja nur zusätzlich einen scrollbalken einfügen
|
|
Xabitire
      
Beiträge: 114
Win Xp, Win Vista
D6 PE, D7 PE
|
Verfasst: Do 07.08.08 13:10
Hi!
Ich muss sagen deine Idee erscheint mir etwas kompliziert!
Ich habe auch ein Notebook mit 7-Zoll Display und kenne von daher das Problem!
Also bei Linux kann man Forms an jeder Stelle verschieben, wenn man dabei "Alt" gedrückt hält! Geht bei Windows allerdings nicht! Aber wenn du ja ein Programm schreiben willst würde ich das genau unter diesem Ansatz versuchen! Das dürfte nicht so kompliziert werden und es lässt sich relativ einfach bedienen!
Ist ja nur ein Vorschlag!
MFG Blackbird8690
|
|
baka0815
      
Beiträge: 489
Erhaltene Danke: 14
Win 10, Win 8, Debian GNU/Linux
Delphi 10.1 Berlin, Java, C#
|
Verfasst: Do 07.08.08 13:19
Dein Programm könnte am Bildschirmrand (WorkArea?) Scrollbalken anzeigen. Beim Programmstart lässt du das zu steuernde Fenster auswählen, ermittelst die Formular-Größe und reagierst mit den Balken entsprechend.
Nachteil: Geht nur für die Main-Form.
Alternativ könntest du auch versuchen, dass du ein Fenster "fängst": Du klickst in deinem Programm auf den Knopf "zu steuerndes Fenster wählen" und danach mit der Maus auf ein anderes Fenster. Von dem holst du dir das Handle und kannst es dann steuern.
Vielleicht klappt sowas ja.
|
|
Tilman
      
Beiträge: 1405
Erhaltene Danke: 51
Win 7, Android
Turbo Delphi, Eclipse
|
Verfasst: Do 07.08.08 13:47
Hallo,
Habe über Google einen Beispielcode für VB gefunden, möglicherweise kann man ihn für Delphi anpassen. Werde das heute Abend auch mal versuchen, habe nur jetzt kein Delphi zur Verfügung:
www.activevb.de/tipp...6tipps/tipp0489.html
_________________ Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
|
|
Tilman
      
Beiträge: 1405
Erhaltene Danke: 51
Win 7, Android
Turbo Delphi, Eclipse
|
Verfasst: Do 07.08.08 18:52
So, hab mal ein bisschen damit rumgespielt. Es geht tatsächlich, müsste man halt noch etwas ausbauen. Mit dem folgenden Code kann man ein Fenster von der Mausposition holen (maus bitte auf die Titelleiste richten, sonst erwischt man stattdessen ein Steuerelement), und dieses dann auf das eigene Formular bekommen:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41:
| var Form1: TForm1; fenster: HWND; implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); var n: Byte; punkt: tPoint; str: pAnsiChar; begin str := strAlloc(255); for n := 1 to 100 do begin progressbar1.Position := n; application.ProcessMessages; sleep(20); end; getCursorPos(punkt); fenster := Windowfrompoint(punkt);
getWindowText(fenster,str,255); caption := str; end;
procedure TForm1.Button2Click(Sender: TObject); begin windows.SetParent(fenster,panel1.Handle); windows.MoveWindow(fenster,0,0,panel1.Width,panel1.Height,true) ; windows.ShowWindow(fenster,1) end;
procedure TForm1.Button3Click(Sender: TObject); var desk: HWND; begin desk := getDesktopWindow; windows.SetParent(fenster,desk) end; |
_________________ Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
|
|
en!gma 
      
Beiträge: 378
win xp
delphi 7.0
|
Verfasst: Do 07.08.08 20:07
ah vielen vielen dank, ich denke damit kann man doch sehr gut arbeiten
|
|
Tilman
      
Beiträge: 1405
Erhaltene Danke: 51
Win 7, Android
Turbo Delphi, Eclipse
|
Verfasst: Do 07.08.08 20:25
Habs noch ein bisschen Abgewandelt, jetzt mit ScrollBox
// edit: 2. version mit bschrifetem Button, sollte leichter zu bedienen sein 
Einloggen, um Attachments anzusehen!
_________________ Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
Zuletzt bearbeitet von Tilman am Do 07.08.08 23:21, insgesamt 2-mal bearbeitet
|
|
Hidden
      
Beiträge: 2242
Erhaltene Danke: 55
Win10
VS Code, Delphi 2010 Prof.
|
Verfasst: Do 07.08.08 21:06
Hi,
Ohne mir das Programm angeschaut zu haben.. Wäre es nicht prinziopiell sogar möglich, einen Zweitbildschirm zu simmulieren?
E: Delphi-Quelltext 1: 2: 3: 4: 5:
| for n := 1 to 100 do begin Progressbar1.Position := n; Application.ProcessMessages; Sleep(20); end; |
Arbeitet da ein anderer Threat oder was bringt das genau?^^
Edit2: Okay.. Hilfe
Ich hab dein Programm jetzt mal runtergeladen und ein bisschen herumexperimentiert.. Auf einmal ist meine Taskleiste aus dem Popup unten verschwunden und als Fenster unabhängig auf dem Desktop oben links
Hoffe mal, ein Neustart behebt das, sonst komm ich morgen nochmal drauf zurück
E: Unter 'Anwendungen' wird eine Anwendung namens 'Ausgeführte Anwendungen' ausgeführt
mfG,
_________________ Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
|
|
en!gma 
      
Beiträge: 378
win xp
delphi 7.0
|
Verfasst: Do 07.08.08 22:06
da fällt mir gerade auf/ein...
gibt es dazu nicht noch eine möglichkeit, den namen der leiste in mein programm zu übernehmen?
okay das wird auf jedenfall gehen, aber kann ich auch einfach die alte leiste weglassen?
denn so hätte ich ja 2 leisten.
am praktischsten wäre es ja, wenn ich nur 1 leiste hab und mit dieser auch das fenster und so verschieben kann
//edit:
doh' ich seh grad der name wird ja schon übernommen.
bleibt nur die frage wegen einer leiste weglassen
|
|
Tilman
      
Beiträge: 1405
Erhaltene Danke: 51
Win 7, Android
Turbo Delphi, Eclipse
|
Verfasst: Do 07.08.08 23:17
_________________ Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
|
|
Tilman
      
Beiträge: 1405
Erhaltene Danke: 51
Win 7, Android
Turbo Delphi, Eclipse
|
Verfasst: Do 07.08.08 23:30
Achja, noch ein Tipp für alle die es zu Bunt getrieben haben: den Explorer kann man auch ohne Neustart wiederherstellen:
1. Taskmanager starten
2. Den Prozess "Explorer" abschießen
3. über Datei-->neuer Task-->explorer eingeben, dann sollte wieder alles stimmen.
_________________ Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
|
|
en!gma 
      
Beiträge: 378
win xp
delphi 7.0
|
Verfasst: Do 07.08.08 23:57
najo und noch einmal dazu.
mein problem ist soweit gelöst, ich denke der rest ist nurnoch spielerei.
habe einfach das fenster um 30 px nach oben verschoben, so sieht man die leiste nicht mehr.
nur etwas blöd wenn man auf das x drückt um das programm zu schließen, dann fragt er halt nicht ob man das eigentliche programm abspeichern möchte oder so.
aber es erfüllt auf jedenfall seinen sinn.
vielen dank
|
|
en!gma 
      
Beiträge: 378
win xp
delphi 7.0
|
Verfasst: Mo 11.08.08 09:03
hm so leicht gings wohl doch leider nicht.
er scheint auf dem kleinen pc das programm erst zu maximieren ( was nicht geht, weil er ja nur eine 600er auflösung hat in der höhe ) und danach pack ich es in mein programm.
ich kann weit genug nach unten scrollen, aber das fenster hat die selbe größe wie ohne das programm :/
gibt es evtl eine möglichkeit es direkt in meinem programm zu starten?
also garnicht erst auf dem desktop?
ich denke, dass dies der grund ist warum er es abschneidet
|
|
Tilman
      
Beiträge: 1405
Erhaltene Danke: 51
Win 7, Android
Turbo Delphi, Eclipse
|
Verfasst: Mo 11.08.08 17:54
Man kann über API-Funktionen das fremde Fenster anweisen sich zu vergößern, werde das demnächst mal implementieren.
// edit
Mir ist grad noch was eingefallen: es könnte auch daran liegen, dass das Fenster beim Kidnappen maximiert ist. Versuche mal das Fenster zuerst auf "Normal" zu stellen, und es dann zu Kidnappen.
Grüße,
Tilman
_________________ Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
|
|
Hidden
      
Beiträge: 2242
Erhaltene Danke: 55
Win10
VS Code, Delphi 2010 Prof.
|
Verfasst: Mo 11.08.08 18:59
Also ich träume ja schon immer davon, Ein Programm in einer Windows-Simulation zu testen.. Und ihm dann einfach einige Sachen zu verbieten: 'Maximieren ignorieren', 'Sounds nicht weiterleiten', ..
Wäre aber wohl schwierig. Wenns so was schon gäbe, ließe sich mit so was sicher auch dieses Problm lösen.
mfGm
_________________ Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
|
|
en!gma 
      
Beiträge: 378
win xp
delphi 7.0
|
Verfasst: Mo 11.08.08 20:28
Tilman hat folgendes geschrieben: | Man kann über API-Funktionen das fremde Fenster anweisen sich zu vergößern, werde das demnächst mal implementieren.
// edit
Mir ist grad noch was eingefallen: es könnte auch daran liegen, dass das Fenster beim Kidnappen maximiert ist. Versuche mal das Fenster zuerst auf "Normal" zu stellen, und es dann zu Kidnappen.
Grüße,
Tilman |
ja das war auch erst mein gedanke.
hatte ich schon probiert aber geht leider nicht.
deswegen ist mir nur eingefallen:
irgendwie nicht maximiert starten
oder
direkt in meinem programm starten
|
|
Tilman
      
Beiträge: 1405
Erhaltene Danke: 51
Win 7, Android
Turbo Delphi, Eclipse
|
Verfasst: Mo 11.08.08 20:35
Naja, werde heute Abend nicht mehr dazukommen da noch rumzuproggen, aber wenn du versuchen willst dein Programm nicht mixmimiert zu startn, könntest du mal versuchen es mit ShellExecute zu öffnen
| Zitat: |
SW_HIDE Hides the window and activates another window.
SW_MAXIMIZE Maximizes the specified window.
SW_MINIMIZE Minimizes the specified window and activates the next top-level window in the Z order.
SW_RESTORE Activates and displays the window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when restoring a minimized window.
SW_SHOW Activates the window and displays it in its current size and position.
SW_SHOWDEFAULT Sets the show state based on the SW_ flag specified in the STARTUPINFO structure passed to the CreateProcess function by the program that started the application. An application should call ShowWindow with this flag to set the initial show state of its main window.
SW_SHOWMAXIMIZED Activates the window and displays it as a maximized window.
SW_SHOWMINIMIZED Activates the window and displays it as a minimized window.
SW_SHOWMINNOACTIVE Displays the window as a minimized window. The active window remains active.
SW_SHOWNA Displays the window in its current state. The active window remains active.
SW_SHOWNOACTIVATE Displays a window in its most recent size and position. The active window remains active.
SW_SHOWNORMAL Activates and displays a window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when displaying the window for the first time.
|
ansonsten ist SetWindowPlacement Dein freund, damit kann man die Position und Höhe/Breite eines Fensters "von aussen diktieren".
Wie gesagt, werde demnächst mal versuchen das oben vorgestellte proggie dementsprechend auszubauen, aber heute nicht mehr 
_________________ Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
|
|
en!gma 
      
Beiträge: 378
win xp
delphi 7.0
|
Verfasst: Di 12.08.08 14:07
hm ich bin am verzweifeln :/
es geht einfach nicht größer
habe gerade so gut wie alle commands von dir ausprobiert.
auch mit setwindowpos wird das fenster nicht größer.
als wenn er sich die maximale höhe merkt wenn er startet.
oder er von der höhe her maximal 20 kleiner als die auflösung annimmt oder sowas in der art
hm hoffe ihr habt noch andere ideen
|
|
Logikmensch
      
Beiträge: 390
Win XP
Delphi 2007 Prof., XE2, XE5
|
Verfasst: Mi 13.08.08 04:54
Hallöle,
ich habe auch einen EEEPC und habe das Problem, dass einige Anwendung meinten, nicht auf dem "achgottchen-nee-viel zu kleinen Display"  laufen zu wollen, dadurch in den Griff bekommen, dass ich ein Zusatz-Tool aus einem EEEPC-Forum runtergeladen hab', welches diverse Auflösungen durch Pixel-Interpolation simuliert. Sowas wie 1024x768 zum Beispiel oder, wer es nicht ganz so groß braucht, auch 800x600.  Funzt gut.
Aber ich will eure Bemühungen hier, die ich auch durchaus interessant finde, nicht schmälern. 
_________________ Es gibt keine Probleme - nur Lösungen!
|
|