Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Kann nicht richtig in die Inputbox klicken (https://www.delphipraxis.net/199961-kann-nicht-richtig-die-inputbox-klicken.html)

Int3g3r 6. Mär 2019 09:54

Kann nicht richtig in die Inputbox klicken
 
Liste der Anhänge anzeigen (Anzahl: 1)
Guten Tag,

Ich erstelle mehrere dynamische Forms. In diesen Forms sind folgende Komponenten verwendet worden:

-Datasource, TIBCQuery (Je 8 Stück auf verschiedene Tabellen)
-TcxDBGrid
-TdxLayoutControl
-TJvDBLookupCombo
-TcxDBTimeEdit
-TcxDBTextEdit
-TDBEdit
-TEdit

Es geht nur um die Edit-Felder der Komponenten. Diese funktionieren bei meiner Applikation nicht ordnungsgemäss. (Siehe Bild - TcxDBTextEdit)

Wenn der Mauscursor wie bei Punkt 1. aussieht kann ich nicht in das Feld klicken. Es passiert nichts. Ich habe keine procedure/funktion die im Hintergrund durchläuft (mit breakpoints überprüft).

Wenn ich aber am Rand klicke wie bei Punkt 2. wird mir das Feld sauber selektiert und ich kann da meinen Wert eintragen. Das TEdit-Feld kann ich gar nicht selektieren auch am Rand nicht.

Es spielt keine Rolle was für eine Komponent ich verwende, ob TEdit TcxDBTextEdit etc. Es funktioniert bei allen nicht richtig. Auch habe ich das TEdit zum Test direkt auf das Form plaziert (kein Panel oder LayoutControl dazwischen).

Ich verwende diese Komponenten auf mehreren Forms. Die anderen Forms werden aber nicht dynamisch erstellt. Bei diesen funktioniert das selektieren einwandfrei. Nur beim dynamisch erstellten Form nicht.

Ich habe das gefühl das das Problem bei den Properties des Forms liegt. Höchswarscheinlich habe ich dort eine Property unabsichtlich verändert die dies nun verursacht, und nein die Edit's sind nicht auf ReadOnly!

Wenn ich den FormStyle von fsNormal auf fsMIDIForm stelle bekomme ich beim erstellen der Forms SQL Exceptions obwohl ich am SQL code nichts verändert habe. Dann funktioniert aber das selektieren der Felder.

Woran könnte das liegen....

Mfg Int3g3r

EmWieMichael 6. Mär 2019 10:22

AW: Kann nicht richtig in die Inputbox klicken
 
Nur ein Versuch: Setze z. B. im FormActivate Form.ActiveControl auf das erste Editfeld.

Int3g3r 6. Mär 2019 10:50

AW: Kann nicht richtig in die Inputbox klicken
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von EmWieMichael (Beitrag 1427047)
Nur ein Versuch: Setze z. B. im FormActivate Form.ActiveControl auf das erste Editfeld.

Da die Felder beim FormActivate auf
Delphi-Quellcode:
Feld.Enabled := false
sind habe ich ich dies nun wie folgt gemacht.

Sobald ich auf den Button "Neu" klicke werden die Felder auf
Delphi-Quellcode:
Feld.Enabled := true
gesetzt.

Danach führe ich dein Test aus :
Delphi-Quellcode:
self.ActiveControl := Feld1
(Ist es wichtig das es das erste Feld ist ?)

Nun erhalte ich folgende Meldung:
Zitat:

"Deaktiviertes oder unsichtbares Fenster kann den Fokus nicht erhalten."
Wäre es deaktiviert würde ich diese Meldung verstehen aber ich kann ja in das Feld Schreiben und mit dem Tabulator auf das nächste Feld wechseln. Also ist es meines wissens nicht deaktivert oder unsichtbar.

Vielleicht sollte ich noch anmerkten das die dynamisch erstellten Forms in einer Scrollbox auf einem anderen Form liegen. (Siehe Bild)

EmWieMichael 6. Mär 2019 12:36

AW: Kann nicht richtig in die Inputbox klicken
 
Es ist vermutlich nicht wichtig, ob es das erste Feld ist, welches zunächst zum aktiven Control erklärt wird.
Ich hatte ein ganz ähnliches Problem:
In einem dynamisch erzeugten Formulat liegen zwei Panels; auf einem eine Combobox und drei TEdit, auf dem anderen ein StringGrid. In FormActivate erhält die ComboBox mit ComboBox.SetFocus den Fokus. Resultat: die Liste der ComboBox lässt sich nicht aufklappen. Ich habe dann experimentiert wie ein Weltmeister (Tabulatorfolge geändert, Platzierung der Controls geändert, Controls rausgeworfen, etc.); die Tabulatorfolge verhielt sich teilweise nicht nachvollziehbar, der Fokus ist z. B. von der ComboBox auf das andere Panel zum StringGrid gesprungen, obwohl eigentlich zunächst die TEdits in der Reihenfolge waren...

Zeig doch mal, wie Du Deine Formulare zum Leben erweckst...

Wie verhält es sich denn, wenn Du die Feledr nicht disablest?

Int3g3r 6. Mär 2019 12:45

AW: Kann nicht richtig in die Inputbox klicken
 
Zitat:

Zitat von EmWieMichael (Beitrag 1427061)
Zeig doch mal, wie Du Deine Formulare zum Leben erweckst...

Wie verhält es sich denn, wenn Du die Feledr nicht disablest?

Sie verhalten sich genau gleich. Auch wenn ich die Felder nicht disable.

Die Tabulatoren funktionieren bei mir einwandfrei auch das .SetFocus funktioniert.
Nur wenn man mit der Maus hineinklicken will funktioniert es nicht richtig. Daher glaube ich auch das es an einer property des dynamisch erstellten Forms liegt. Habe aber schon etliche getestet.

Delphi-Quellcode:
   for i := ListBoxFahrzeug.Items.Count-1 downto 0 do
      begin
         if ListBoxFahrzeug.Items.Items[i].Checked = true then
         begin
            ChildArray[ChildForwardIndex] := Tfrm_child.Create(frm_Auftraege);
            ChildArray[ChildForwardIndex].parent := childContainer;
            ChildArray[ChildForwardIndex].lblKennzeichen.Caption := listBoxFahrzeug.Items.Items[i].Text;
            ChildArray[ChildForwardIndex].lblFahrzeugID.Caption := listBoxFahrzeugID_Array[i].ToString;
            ChildArray[ChildForwardIndex].lblDatum.Caption := DateToStr(activeDate);
            ChildArray[ChildForwardIndex].Show;
            inc(ChildForwardIndex);
         end;
      end;
Etwas ist aber speziell. Im dynamisch erstellten Form funktioniert das "FormActivate" nicht. Ich musste dort jegliche startroutinen im "FormShow" machen. Beim erstellen des Forms geht er nicht einmal durch das "FormActivate" durch.

EmWieMichael 6. Mär 2019 14:55

AW: Kann nicht richtig in die Inputbox klicken
 
Wirf doch zum Testen mal alles raus (in OnCreate und OnShow), was nicht unbedingt notwendig ist. Hast Du schon getestet, ob der Effekt auch eintritt, wenn Du nur ein Formular (statt mehrere in der Schleife) anzeigst?

Int3g3r 6. Mär 2019 15:13

AW: Kann nicht richtig in die Inputbox klicken
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von EmWieMichael (Beitrag 1427086)
Wirf doch zum Testen mal alles raus (in OnCreate und OnShow), was nicht unbedingt notwendig ist. Hast Du schon getestet, ob der Effekt auch eintritt, wenn Du nur ein Formular (statt mehrere in der Schleife) anzeigst?

Der Effekt tritt auch auf wenn ich nur ein From erstelle.

Im OnShow mache ich die DBs auf und zwei SQL abfragen. Habe alles auskommentiert, das Problem besteht dann immer noch.


----> Edit


Ich konnte nun das Problem weiter eingrenzen. Mein Problem wird sein das der Fokus auf das zu bearbeitende Form nicht richtig gesetzt wird.
Im Anhang seht ihr nochmals das Layout.

So wie ich das sehe hat das "MainForm" die ganze Zeit den Fokus.. auf diesem funktioniert das selektieren in einer InputBox normal.
Bei den dynamischen Forms ist der Border die ganze zeit leicht grau, wie das Form im hintergrund wäre.

Ich habe nun ein wenig mit dem FromStyle gespielt. Wenn ich das "MainForm" (style = fsMDIform) bei Applikationsstart erstellen lasse werden mir die "dynamischen Forms" (style = fsMDIChild) erstellt und das erste dynamische Form ist aktiv.
Im ersten dynamischen Form funktioniert nun das selektieren in eine Inputbox. Sobald ich in das zweite dynamische Form klicke wird dieses nicht "Aktiviert". Das erste bleibt weiterhin Aktiv.

Wenn der style = fsMDIform gesetzt ist kann ich das
Delphi-Quellcode:
ChildArray[ChildForwardIndex].parent := self.childContainer;
nicht setzen. Sonst kriege ich eine Fehlermeldung beim erstellen der Childs:
Zitat:

Deaktiviertes oder unsichtbares Fenster kann den Fokus nicht erhalten.

Am einfachsten ausgedrückt möchte ich die dynamischen Forms in die Scrollbox des "MainForms" "einbetten".

Int3g3r 7. Mär 2019 10:26

AW: Kann nicht richtig in die Inputbox klicken
 
Habe das Problem gelöst.

Ich musste folgende Property beim dynamischen Form setzen:

Delphi-Quellcode:
BorderStyle := bsNone
https://stackoverflow.com/questions/...t-accept-focus

peterbelow 7. Mär 2019 11:27

AW: Kann nicht richtig in die Inputbox klicken
 
Zitat:

Zitat von Int3g3r (Beitrag 1427182)
Habe das Problem gelöst.

Ich musste folgende Property beim dynamischen Form setzen:

Delphi-Quellcode:
BorderStyle := bsNone
https://stackoverflow.com/questions/...t-accept-focus

Du hättest Dir diese ganzen Probleme ersparen können, wenn Du Frames statt Forms verwendet hättest. Forms sind einfach nicht dazu gedacht, in andere Controls eingebettet zu werden (MDI ist da ein Sonderfall).

Int3g3r 7. Mär 2019 11:37

AW: Kann nicht richtig in die Inputbox klicken
 
Zitat:

Zitat von peterbelow (Beitrag 1427194)
Du hättest Dir diese ganzen Probleme ersparen können, wenn Du Frames statt Forms verwendet hättest. Forms sind einfach nicht dazu gedacht, in andere Controls eingebettet zu werden (MDI ist da ein Sonderfall).

Wenn man ein Neuling ist weis man noch nicht was man nicht darf und nicht sollte. Man benutzt was einem bekannt ist.
Bin erst heute durchs Suchen auf Frames gestossen. Vorher wusste ich nicht das Frames existieren.:roll:

Dies hat auch ein Vorteil.. Wenn man zwei Tage an einem solchen Problem verzweifelt wird man das nächste mal daran denken.....:-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:10 Uhr.
Seite 1 von 2  1 2      

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