![]() |
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 |
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 |
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 |
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 ???? |
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 |
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 |
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... :?: :?: :?: |
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 |
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 |
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 |
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 |
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...
|
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:
Na heute werde ich das wohl nicht mehr hinkriegen... erst mal Cappucino organisieren Grüße // Martin |
Re: Aktivieren des Clientfensters
Zitat:
|
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 |
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. |
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: |
Re: Aktivieren des Clientfensters
Zitat:
|
Re: Aktivieren des Clientfensters
Zitat:
Gruß Matze |
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 |
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 ?? |
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 |
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 |
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 |
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 |
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. |
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 |
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: |
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 |
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!!! |
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 |
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 |
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. |
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 |
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 |
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 |
Re: Aktivieren des Clientfensters
WinSight32 (WS32.EXE) im Delphi/Bin-Ordner...
|
Re: Aktivieren des Clientfensters
Danke Stevie, werd das gleich mal angehen...
Grüße //Martin |
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 |
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. |
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