Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Aktivieren des Clientfensters (https://www.delphipraxis.net/7600-aktivieren-des-clientfensters.html)

mschaefer 16. Aug 2003 22:49


Aktivieren des Clientfensters
 
Hallo

im Anhang habe ich ein Beispielprojekt liegen, wo das Problem
was ich habe praktisch nachvollziehbar ist..

Ok, ich habe eine Anwendung die dynamisch Clientfenster erzeugt. Mein Orginalprojekt hat eine ganze Reihe unterschiedliche davon.

Nun gibt es einige Funktionen, die immer erreichbar sein müssen und zwar unabhängig welches Clientfenster gerade offen ist.
Da diese Funktionen schnell zu finden sein sollen können diese per Button auf einem Panel im MDI-Fenster aufgerufen werden.

Das Problem:

Wenn ich einen Button angeklickt habe, dann kann
ich anschließend auf ein Clientfenster klicken und es wird
NICHT aktiviert, was mir völlig unverständlich ist.

Gibt´s da irgendeine Idee zu / Hinweise / Verdächtige...

Viele Grüße // Martin

S - tefano 16. Aug 2003 22:56

Re: Aktivieren des Clientfensters
 
Hi,

würds mir gerne mal ansehen, aber leider kann ich keine der beiden ZIP- Dateien öffnen.
Kannst ja mal versuchen das Problem irgendwie näher zu beschreiben oder so... oder halt am besten das Programm nochmal hochladen.

Bis dann,

S - tefano

mschaefer 17. Aug 2003 06:12

Re: Aktivieren des Clientfensters
 
Liste der Anhänge anzeigen (Anzahl: 1)
Moin, moin

Ok, also nochmal. Sollt jetzt hochgeladen werden. Das Problem scheint zu sein, das ein Clientfenster nicht den Fokus erhält, wenn man im MDI-Formular Elemente anklicken kann die ebenfalls den Fokus erhalten. Sorry denke die Beschreibungtrifft´s schon recht gut. Naja lasse mich aber gern überzeugen..

Grüße // Martin

mschaefer 17. Aug 2003 20:41

Re: Aktivieren des Clientfensters
 
Hallo
nochmal ganz knapp: Wie kann ich das Clientfenster nach einem
Mausklick auf einen von den Buttons im MDI-Formular künstlich
aktivieren ????

S - tefano 17. Aug 2003 21:45

Re: Aktivieren des Clientfensters
 
Hm, also ich habs bei mir mit Form1.Activate, Form1.Bringtofront und Form1.SetFocus probiert...
aber irgendwie hat keins davon geklappt... hmmm

Sorry, leider kein Plan, hoffe jemand anders weis es. Jetzt interessierts mich ja irgendwie schon wohl auch.

Bis dann,

S - tefano

mschaefer 18. Aug 2003 16:04

Re: Aktivieren des Clientfensters
 
Hallo,

mir ist noch eine Kleinigkeit aufgefallen. Wenn ich per ALT+TAB zu einem anderen Programm wechsle und dann wieder zurückgehe, dann ist das Clientfenster korrekt aktiv.

Da muß doch irgendein Ereignis sein, was dieses Aktivieren hervoruft.
Hat irgendjemand noch eine Idee, das Ding bringt bestimmt graue Haare...

:roll: :roll:

Grüße // Martin

S - tefano 18. Aug 2003 16:18

Re: Aktivieren des Clientfensters
 
u.U. musst du irgendeine Art "Refresh- Prozedur" aufrufen, oder nach dem Aktivieren des Fensters ein "Application.ProcessMessages" einfügen...

Ansonsten... :?: :?: :?:

mschaefer 19. Aug 2003 09:25

Re: Aktivieren des Clientfensters
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo
ja mein kleines Problem lässt mich immer noch nicht los. Der Stand ist
aktuell der, dass wenn man nach dem Click auf einem Button im MDI-Formulat ALT-F6 gedrückt wird das Clientfenster aktiviert wird.

Frage: was macht ALT-F6, welche Methode/Message steckt dahinter ?

Habe das Clientformular um einen Button "tue nichts" erweitert.
Clickt man erst auf einen Button im MDI-Form kann man das Grid im
Clientform nicht mehr focusieren (weiss der Geier !!) clickt man
dann zuerst auf den tue nichts-Button und dann auf das Grid ist es
selektierbar und alles läuft wie gewohnt.

Hallot Stefano ist nett, das Du Dich hiermit durchknobelst. Befürchte aber ohne externe Beratung bleibt das Ding ein Geheinis Borlands (da wo der wissende Geier ist - den Kerl kriegt man so schlecht zu fragen ran .. )

Grüsse // Martin

S - tefano 19. Aug 2003 12:11

Re: Aktivieren des Clientfensters
 
Hmmmmmmhmmmmmhmmmmmm...

Hab mir mal das neue runtergeladen.
Wenn das Programm startet, dann kommt nach ein paar Sekunden ein Client- Fenster mit nem DBGrid drin. Das ist dann auch sofort aktiviert.
Durch einen Klick auf etwas im Hauptfenster wird es nicht deaktiviert. Ich mache also ein neues Clientfenster (Datei-Neu) auf. Das ist dann sofort aktiviert, das andere Clientfenster wird deaktiviert.
Dann klicke ich irgendwo ins Hauptfenster auf einen der drei Buttons oben, und danach irgendwo hin auf das deaktivierte Clientfenster. Es rückt dann ganz normal in den Vordergrund und ist wieder aktiv...

Also bei mir läufts... auch ohne ALT+F6, wovon ich übrigens gerade nicht weiß was es macht.

Ich hatte mal was ähnliches. Da wollte ich ein Richedit nach unten Scrollen und hab zuerst ein Strg-Down, dann ein BildRunter-Down, und dann in umgekehrter Reihenfolge beides wieder -Up an das Richedit geschickt. Bei mir wollte es einfach nicht gehen, bei anderen Usern hier liefs.

Also da muss ich leider sagen, dass ich partout nicht weiß, was da bei dir schief läuft. Unter Umständen hast du irgendwie irgendwo ne blöde Einstellung im Compiler oder sowas gemacht...

Bis dann,

S - tefano

P.S.: "Der wissende Geier" - llllloooooooooooooooooollll

Matze 19. Aug 2003 12:23

Re: Aktivieren des Clientfensters
 
Hi!

Entweder versteh ich die Frage nicht, oder bei mir geht's auch.
Ich kann keinen Fehler entdecken. :mrgreen:

Gruß Matze

mschaefer 19. Aug 2003 12:43

Re: Aktivieren des Clientfensters
 
Moin, moin



Ok dann bau ich die Frage mal um...na in ne Aufgabe..


1: Ok das Clientfenster erscheint nach dem Start

2. Bitte einmal einen von den drei Buttons im MDI-Formular anklicken
(wäre halt irgendeine Funktion für alle Clientformulare )

3.) Und jetzt mal versuche eine Änderung im Grid machen ...

Geht dass bei Euch ?? Bei mir halt nicht :cry:



Bei mir läßt sich das Grid nicht mehr bearbeiten nach dem ersten
Click auf einen von den MDI-Buttons (war´n Sabotagegeier)
Das muss aber weiterhin gehen ...



Grüße // Martin

S - tefano 19. Aug 2003 13:16

Re: Aktivieren des Clientfensters
 
Also bei mir kann ich alles ändern außer die IDs in der ersten Spalte. Hab die Aufgabenstellung absolut befolgt, geht trotzdem...

mschaefer 19. Aug 2003 14:04

Re: Aktivieren des Clientfensters
 
Moin, Moin,

tja nach dem Kochrezept kann ich nach dem Druck auf einem der
drei oberen Buttons nicht mehr das Grid edieren....

Wenn´s bei Euch geht kann ich nur passen ( Geier hat gewonnen ? )


Das das erst mal nicht geht und jetzt auf einmal gehen soll
wundert mich etwas...

Zitat:

S tefano schrieb:

Hm, also ich habs bei mir mit Form1.Activate, Form1.Bringtofront und Form1.SetFocus probiert...
aber irgendwie hat keins davon geklappt... hmmm

Na heute werde ich das wohl nicht mehr hinkriegen...
erst mal Cappucino organisieren

Grüße // Martin

S - tefano 19. Aug 2003 14:16

Re: Aktivieren des Clientfensters
 
Zitat:

Das das erst mal nicht geht und jetzt auf einmal gehen soll
wundert mich etwas...
Hm... mich auch. Ich dachte du hättest da jetz irgendwas dran geändert dass es bei mir jetzt zwar läuft, aber bei dir nicht... in einer der anderen ZIPFiles (weiß nicht mehr welche) gings aber noch nicht... :? :? :? :? :?

mschaefer 19. Aug 2003 14:32

Re: Aktivieren des Clientfensters
 
Hallo Stefano

Nett das Du Dich mit meinen Zip´s rumgeschlagen hast Hätte ja such die Exe geschickt, aber die scheint der Server zu filtern. Vielleicht liegt das doch an irgendeinem Serviece-Pack was mir fehlt.

Geändert habe ich übrigens was: Den "tue nichts " Button auf das
Formular geschoben. Bei mir scheint delphi das Grid nicht fokusieren
zu können, aber den Button schon.

Ha der Cappucino kommt gerade :spin:



Grüße // Martin

Matze 19. Aug 2003 20:21

Re: Aktivieren des Clientfensters
 
Also bei mir geht das auch. Das hast du gut programmiert. :mrgreen:

Ich weiß auch nicht, wieso's bei dir nicht geht. Nebenbei: ich hab WinXP Home.

mschaefer 19. Aug 2003 20:55

Re: Aktivieren des Clientfensters
 
Gute Nacht,

Ihr habt genwonnen. Werde mal nen anderen Rechnerr
zum ausprobieren organisieren .... was´n Tach ...
Danke den beiden Testern !!!

Grüße aus dem Norden // Martin



( und den Geier grill ich, wenn ich ihn kriege ) :duck:

S - tefano 19. Aug 2003 20:59

Re: Aktivieren des Clientfensters
 
Zitat:

Zitat von mschaefer
Danke den beiden Testern !!!

Keine Ursache ;-)

Matze 19. Aug 2003 21:02

Re: Aktivieren des Clientfensters
 
Zitat:

Zitat von mschaefer
Danke den beiden Testern!!!

Schon Recht! Gute Nacht

Gruß Matze

mschaefer 8. Sep 2003 20:57

Re: Aktivieren des Clientfensters
 
Moin,
tja gebe zu es ist schon etwas her, aber im Prinzip weiß ich
immer noch nicht warum das bei mir nicht geht. Tja Fatal !

Könnte mir einer von Euch beiden mal sein Compiliertes-Execute per mail
schicken: schaefer@ifgb.uni-hannover.de

Alles was ich mit Compilert habe hat von Win98 bis Xp das geschilderte
Problem. Irgendwann taucht das Ding dann doch wieder auf... :hi:


Viele Grüße // Martin

mschaefer 9. Sep 2003 07:43

Re: Aktivieren des Clientfensters
 
Hallo zusammen

Vielen Dank S - tefano für die doch geduldige Fehlersuche.
Du hast vollkommen recht Dein Execute funktioniert einwandfrei
Einfach nur "Staun". Werde Dir mal meins schicken. Habe wirklich
keine Halluzinationen.

Aber, da ist wohl eine neue Delphi-Installation :pale:
fällig mit updates und so. Das ist echt ein Ding...

Vielen Dank // Martin


PS: Wie kann ich denn den Bietrag als beantwortet markieren ??

S - tefano 9. Sep 2003 13:44

Re: Aktivieren des Clientfensters
 
Huiuiui, das is ja echt mal merkwürdig.
Wenn ich zuerst auf Button2 klicke, dann kann ich in deiner Exe ebenfalls keine Änderungen mehr im DBGrid machen. Drücke ich Button1 oder Button3, gehts trotzdem. Aber sobald Button2 geklickt wurde, gehts nich mehr.

In der anderen Exe, die mein Delphi erstellt hat gehts ohne Probleme...

Ich hoffe mal für dich, dass das mit ner neuen Installation behoben sein wird.

Den Beitrag als beantwortet markieren, da müsste irgendwo oben rechts ein Text- Link stehen: "Als beantwortet markieren" steht da glaube ich. Oder oben links. Auf jeden Fall irgendwo oben...

Bis dann,

S - tefano

Ralf Stehle 5. Jul 2004 23:38

Re: Aktivieren des Clientfensters
 
Ich habe genau das gleiche Problem und bin total entnervt. Habt Ihr mittlerweile eine Erklärung und Lösung gefunden?

Ich habe das mit dem Tue nichts-Button mal probiert: Wenn ich den Button hinter das Grid lege, dann ist er nicht sichtbar und stört nicht. Jedesmal wenn ich in der Menüleiste einen Button drücken muß, habe ich den Befehl Form1.Button1.Setfocus hinterlegt, dann funktioniert das Grid sofort wieder. Eine tolle Lösung ist das aber nicht, da ich immer überprüfen muss, welches ChildForm gerade geöffnet ist und bearbeitet werden soll und auf jedem Child muß ich wieder diesen Button daraufsetzten

Grruß Ralf

mschaefer 6. Jul 2004 11:38

Re: Aktivieren des Clientfensters
 
Moin, Grübel,

also, das Problem liegt irgendwo tiefer in der VCL.
Richtig gelöst ist das eigentlich nicht.

Fazit ist: Bei D7 tritt der Effekt nicht auf
mit D4 und D6 läßt sich der Effekt beobachten.

Irgendwie wird der Fokus der Tastatureingabe nicht verschoben.


Sorry, keine Ahnung // Martin

Ralf Stehle 6. Jul 2004 13:10

Re: Aktivieren des Clientfensters
 
Mit meiner Version von D7 tritt das Problem leider auch auf.
Die Notlösung, einen Button auf das Childformular zu platzieren scheint recht gut zu funktionieren. Ich übergebe bei Bedarf einfach dem Button den Focus, da dieser Hinter dem DBGrid plaziert ist, merkt der Anwender davon nichts

Ralf

Stevie 6. Jul 2004 13:47

Re: Aktivieren des Clientfensters
 
Die Lösung für dein Problem ist, SpeedButtons zu nehmen, die können keinen Fokus erhalten und somit kann das Problem nicht auftreten. Ich hab's getestet und es funktioniert!

P.S.: einfach die Deklarationen von den drein Buttons von TButton in TSpeedButton ändern, das Formular als Text öffnen und dort auch ersetzen.

mschaefer 6. Jul 2004 14:15

Re: Aktivieren des Clientfensters
 
Moin - Wie? - Moin,

da steckt der Wurm drin! Was ist denn da jetzt los. Habe von S-tefano ein Compilat (D7?) bekomme,
dass dieses leidige Verhalten nicht hatte! Bei mir D6 tritt der Unsinn auch auf. Matze hat es doch
auch probiert und was nun???

Jetzt läuft´s bei Ralf unter D7 auch nicht richtig und Steve hat auch D7 Prof. ??!!

Das ist doch "fraglich"

:?: :?: :?: :?: :?: :?: :?: :?: :?: :?: :?: :?: :?: :?: :?: :?: :?: :?: :?:
:?: :?: :?: :?: :?: :?: :?: :?: :?: :?: :?: :?: :?: :?: :?: :?: :?: :?: :?:


Grübel // Martin

Stevie 6. Jul 2004 14:17

Re: Aktivieren des Clientfensters
 
Hehe, ich hab's mit Delphi 6 (an der Arbeit) probiert und mit den SpeedButtons ist das Problem gefixt!!!
P.S. Stevie heißt des!!! :mrgreen:

mschaefer 6. Jul 2004 14:26

Re: Aktivieren des Clientfensters
 
Hi Steve

Ok, das dies mit Speedbuttons nicht auftritt ist logisch. Die entziehen dem Clientformular
nicht den Fokus, dafür haben Sie aber auch keinen Tastenzugriff und keine Direktzugriffstaste !

Es muss doch einen Weg geben. Eine Ableitung vom Grid oder ControlGrid, was sich den Fokus
wieder schnappt? Was passiert da nun ?

Naja also gefixt würde ich da noch nicht sagen eher geklebt... :wink:

Was gibt es noch für Fokusbefehle??

OnFokus // Martin

Stevie 6. Jul 2004 14:32

Re: Aktivieren des Clientfensters
 
Wenn man mit einer ActionList arbeiten würde, dann hätte man auch Short-Cuts...
Btw. Schonmal bei MSWord oder so mit den Tasten durch die Tool-Buttons navigiert??? :roll:
P.S.: TDBGrid ist ja sowas von bugverseucht!!!

mschaefer 6. Jul 2004 14:58

Re: Aktivieren des Clientfensters
 
Moin,

Irgendwas haben die beiden anders Konfiguriert oder ein Update??
(das mit dem TDBGrid ist definitv so, traurig sowas auszuliefern)

Grüße // Martin

mschaefer 6. Jul 2004 18:14

Re: Aktivieren des Clientfensters
 
Moin, moin,

das Problem ist aber nicht nur eines der Buttons. Angenommen ich habe im Hauptfenster
andere Elemente wie Listview, Radio-Buttons oder Editfelder dann haben die auch den
Fokus. Beim wechsln auf ein Grid im Clientfenster gehrt der Fokus dann ebenfalls nicht
korrekt mit. Vielleicht kann jemand anderes nochmal den Quellcode aus dem ersten Beitrag
Compilern um besser eingrenzen zu können auf welchen Delphi-Versionen das Fokusproblem
auftritt. :hi:

Grüße // Martin

Stevie 6. Jul 2004 20:49

Re: Aktivieren des Clientfensters
 
Stimmt, du hast recht. :oops:
Was ich bisher festgestellt habe, ist: Irgendwo "verliert" eintweder das ChildForm oder die Grid eine Message.
Sieht irgendwie so aus, als ob der Fokus vom Grid nicht richtig abgegeben und somit auch nicht wieder richtig gesetzt wird.

mschaefer 6. Jul 2004 21:21

Re: Aktivieren des Clientfensters
 
Spät Moin,

heut abend gibt das eh nicht mehr viel, aber ich habe eben mit S-tefano maö privat gemailt.
Bei ihm ging das Compilat mit der Fokusrückgabe, aber er teilte mir mit, das er ein englische D7 hat. Wahrscheinlich ist Borland da ein Fehlerrevisione weiter.

Du hast Steve, das CtrlGrid müßte eine Message abfeuern, geb mir Tastatrufokus oder aktiviert das Clientfenster und gebt mir den Fokus wenn es angeklickt wird. Es gibt sich offensichtlich nicht richtig als WinControl zu erkennen (soweit ich das verstanden habe).

Weiß nicht ob es passt, aber ich habe von Rainer Reusch in der Toolbox einen Artikel in Erinnerung
wo er einem SpeedBotton ein Handle zuordnet, sodaß er auch auf eine Zugriffstaste reagiert.

heute abend komme ich da nicht weiter....

Gute Nacht und Shutdown - // Martin

mschaefer 19. Jul 2004 23:00

Re: Aktivieren des Clientfensters
 
Moin, 0.00 Uhr Moin,

tja bin wieder mal bei einem guten alten Problem angekommen. Wie kann ich eigentlich
herausbekommen auf welche Ereignisse ein VCL-Element alles reagiert. Als was macht der Button anders als das DBCtrlGrid?

Grüße // Martin

mschaefer 20. Jul 2004 17:14

Re: Aktivieren des Clientfensters
 
( schubs... (sorry)


Hallo

Kennt jemand ein Tool mit dem ich die Windows-Nachrichten an ein Programm angezeigt bekomme? Möchte gerne austesten welche Unterschiede von TDBCtrlGrid und TButton bestehen.

Grübel // Martin

Stevie 22. Jul 2004 07:41

Re: Aktivieren des Clientfensters
 
WinSight32 (WS32.EXE) im Delphi/Bin-Ordner...

mschaefer 22. Jul 2004 08:30

Re: Aktivieren des Clientfensters
 
Danke Stevie, werd das gleich mal angehen...

Grüße //Martin

mschaefer 27. Jul 2004 22:50

Re: Aktivieren des Clientfensters
 
Grübel,...

Bin inzwischen mit WinSigth auf Suche gegangen, aber letzlich muss ich passen.
Finde einfach keine Unterschiede. Wahrscheinlich ist da irgenwo ein Verarbeitungsfehler
im Code des DBCtrlGrid oder Tiefer in der Komponentenhierachie. Es scheint auch so
als würden alle Nachrichnten angenommen, habe jedenfalls keine Nachrichtenunterschiede
zum Button entdeckt. Das heisst natürlich nicht, dass diese auch weiterverarbeitet werden...

Ok, an dem Ding habe ich meine Nuss gefunden,
da fällt mir nichts mehr zu ein.....

Grüße // Martin

S - tefano 31. Jul 2004 01:23

Re: Aktivieren des Clientfensters
 
Also das ist ja echt mal komisch.
Mit ähnlicher Willkür habe ich derzeit zu tun, habe einen Array voller Threads und nur auf den nullten Thread kann ich ohne Exception zugreifen... manchmal gehn die andern auch, manchmal wieder nich :?

Naja, that's life spending it programming
Vielleicht kannstes ja irgendwann mal mit Delphi9 wenns raus ist fehlerfrei compilieren ;-)
Ansonsten noch viel Glück auf der nun schon so langen Fehlersuche,

S - tefano


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:42 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz