AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Kann nicht richtig in die Inputbox klicken

Ein Thema von Int3g3r · begonnen am 6. Mär 2019 · letzter Beitrag vom 7. Mär 2019
Antwort Antwort
Int3g3r

Registriert seit: 28. Nov 2018
Ort: Schweiz
118 Beiträge
 
Delphi 10.3 Rio
 
#1

AW: Kann nicht richtig in die Inputbox klicken

  Alt 6. Mär 2019, 10:50
Nur ein Versuch: Setze z. B. im FormActivate Form.ActiveControl auf das erste Editfeld.
Da die Felder beim FormActivate auf Feld.Enabled := false sind habe ich ich dies nun wie folgt gemacht.

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

Danach führe ich dein Test aus : 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)
Angehängte Grafiken
Dateityp: jpg Layout.jpg (43,6 KB, 17x aufgerufen)

Geändert von Int3g3r ( 6. Mär 2019 um 11:11 Uhr)
  Mit Zitat antworten Zitat
EmWieMichael

Registriert seit: 28. Mär 2012
103 Beiträge
 
#2

AW: Kann nicht richtig in die Inputbox klicken

  Alt 6. Mär 2019, 12:36
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?
  Mit Zitat antworten Zitat
Int3g3r

Registriert seit: 28. Nov 2018
Ort: Schweiz
118 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Kann nicht richtig in die Inputbox klicken

  Alt 6. Mär 2019, 12:45
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.

Geändert von Int3g3r ( 6. Mär 2019 um 12:54 Uhr)
  Mit Zitat antworten Zitat
EmWieMichael

Registriert seit: 28. Mär 2012
103 Beiträge
 
#4

AW: Kann nicht richtig in die Inputbox klicken

  Alt 6. Mär 2019, 14:55
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?
  Mit Zitat antworten Zitat
Int3g3r

Registriert seit: 28. Nov 2018
Ort: Schweiz
118 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Kann nicht richtig in die Inputbox klicken

  Alt 6. Mär 2019, 15:13
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 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".
Angehängte Grafiken
Dateityp: jpg Layout2.jpg (47,7 KB, 8x aufgerufen)

Geändert von Int3g3r ( 7. Mär 2019 um 09:45 Uhr)
  Mit Zitat antworten Zitat
Int3g3r

Registriert seit: 28. Nov 2018
Ort: Schweiz
118 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Kann nicht richtig in die Inputbox klicken

  Alt 7. Mär 2019, 10:26
Habe das Problem gelöst.

Ich musste folgende Property beim dynamischen Form setzen:

BorderStyle := bsNone https://stackoverflow.com/questions/...t-accept-focus
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
727 Beiträge
 
Delphi 12 Athens
 
#7

AW: Kann nicht richtig in die Inputbox klicken

  Alt 7. Mär 2019, 11:27
Habe das Problem gelöst.

Ich musste folgende Property beim dynamischen Form setzen:

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).
Peter Below
  Mit Zitat antworten Zitat
EmWieMichael

Registriert seit: 28. Mär 2012
103 Beiträge
 
#8

AW: Kann nicht richtig in die Inputbox klicken

  Alt 7. Mär 2019, 18:08
Habe das Problem gelöst.
...
Gewusst wie!
Vielen Dank für die Erfolgsmeldung.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:33 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