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
Seite 1 von 2  1 2      
Int3g3r

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

Kann nicht richtig in die Inputbox klicken

  Alt 6. Mär 2019, 10:54
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
Miniaturansicht angehängter Grafiken
cellselect.jpg  
  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, 11:22
Nur ein Versuch: Setze z. B. im FormActivate Form.ActiveControl auf das erste Editfeld.
  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, 11: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)
Miniaturansicht angehängter Grafiken
layout.jpg  

Geändert von Int3g3r ( 6. Mär 2019 um 12:11 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, 13: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
 
#5

AW: Kann nicht richtig in die Inputbox klicken

  Alt 6. Mär 2019, 13: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 13:54 Uhr)
  Mit Zitat antworten Zitat
EmWieMichael

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

AW: Kann nicht richtig in die Inputbox klicken

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

AW: Kann nicht richtig in die Inputbox klicken

  Alt 6. Mär 2019, 16: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".
Miniaturansicht angehängter Grafiken
layout2.jpg  

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

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

AW: Kann nicht richtig in die Inputbox klicken

  Alt 7. Mär 2019, 11: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
701 Beiträge
 
Delphi 12 Athens
 
#9

AW: Kann nicht richtig in die Inputbox klicken

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

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

AW: Kann nicht richtig in die Inputbox klicken

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

Dies hat auch ein Vorteil.. Wenn man zwei Tage an einem solchen Problem verzweifelt wird man das nächste mal daran denken.....
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 09:01 Uhr.
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