Delphi-PRAXiS

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 Combobox nicht 1. Geige (https://www.delphipraxis.net/72186-combobox-nicht-1-geige.html)

Privateer3000 26. Jun 2006 20:47


Combobox nicht 1. Geige
 
Hiho Leutz,
ich hab ein merkwürdiges Problemchen,

ich habe in einem Form mehrere Elemente
Butons, Edits,Comboboxen usw.
Eine Combobox soll aber als erstes beim
Programmstart fokussiert sein.
Aber es ist immer ein Button als erstes markiert.
Obwohl die Box den Taborder 0 hat und der betroffene
Button erst die 1.
Wieso ist die Combo nicht markiert?

Lg
Privateer

EDatabaseError 26. Jun 2006 20:54

Re: Combobox nicht 1. Geige
 
mach im form activate:
ComboBox1.Setfocus;

das liegt daran das du den button oder anderes vor der combobox ins form gesetzt hast.


mfg
tobi

Privateer3000 26. Jun 2006 21:00

Re: Combobox nicht 1. Geige
 
Danke
es muss was anderes sein was das verhindert
denn jetzt erhalt ich eine exception,
dass ein "deaktiviertes oder unsichtbares Element kein Fokus erhalten kann"
Nichts von beiden ist aber Fall!!

EDatabaseError 26. Jun 2006 21:06

Re: Combobox nicht 1. Geige
 
also bim setfocus ist enabled und visible true??

(das setfocus muss in das form in dem die cb auch ist)

DGL-luke 26. Jun 2006 21:11

Re: Combobox nicht 1. Geige
 
EDBErr meint wohl, dass die Checkbox aktiviert (enabled = true) und sichtbar (visible = true) sein muss.

Hawkeye219 26. Jun 2006 21:21

Re: Combobox nicht 1. Geige
 
Hallo,

hast du es schon einmal mit der Eigenschaft Delphi-Referenz durchsuchenTForm.ActiveControl versucht?

Gruß Hawkeye

Privateer3000 26. Jun 2006 21:21

Re: Combobox nicht 1. Geige
 
in der Tat, trifft beides zu! Beides ist enabled.
ich kann es mir auch nicht erklären.

DGL-luke 26. Jun 2006 21:35

Re: Combobox nicht 1. Geige
 
Ich bin sop ziemlcih am Ende mit meinem latein... haben dbutton und combobox evtl. verschiedene parents sprich liegen in verschiedenen Containern? Ansonsten einfach mal Button und Combobox löschen und neu erstellen...

EDatabaseError 26. Jun 2006 21:48

Re: Combobox nicht 1. Geige
 
ja oder in der form datei vertauschen

DGL-luke 26. Jun 2006 21:54

Re: Combobox nicht 1. Geige
 
Was EDBErr wohl sagen will: :stupid:
(ach ich seh grad, 400+ Posts, da muss ich das wohl nicht so groß erklären:

Einfach mal ein bisschen in der DFM rumpfuschen, im formdesigner rechtsklick -> ansicht als text :)

EDatabaseError 26. Jun 2006 21:56

Re: Combobox nicht 1. Geige
 
danke für die genauere erläuterungen. ich kann z.zt. nicht viel schreiben da ich eisbeutelchen an die bäckchen halten muss ;-)

mkinzler 26. Jun 2006 22:16

Re: Combobox nicht 1. Geige
 
DGL-Luke wollte glaube ich nur sagen, da0 Tobias' Vorschlag Gefahren birgt. Ich finde aber es wäre einen Versuch wert.

Sidorion 27. Jun 2006 09:55

Re: Combobox nicht 1. Geige
 
Das Problem liegt in der ComboBox selber vergraben. Diese hat schon von Windows her die Items, diese sind aber erst verfügbar, wenn das Ding ein gültiges Handle hat. Dieses kriegt sie allerdings erst, wenn die Form komplett sichtbar ist. Daher kann man eine ComboBox erst focussieren, wenn sie auch angezeigt wird. Um solche Probleme zu vermeiden greift Delphi zu dem Trick, eben nicht die Box, sondern ein bel. anderes Eleement zu focusieren.
Eine Chance, die ich sehe, ist die Box zu focusieren, NACHDEM sie voll sichtbar wurde. Dazu überschreiben wir die Methode CreateHandle von TCustomComboBox, in der wir ein Ereignis auslösen. Auf dieses Ereignis kann man dann reagieren und den Focus setzen.

p.s.: das ist auch der Grund, warum man ComboBoxen erst dann items verpassen kann, wenn sie ein gültiges Handle haben.

Daniel G 27. Jun 2006 10:03

Re: Combobox nicht 1. Geige
 
@Sidorion: Wieder was gelernt. :thumb:
@Privateer3000: Ich nenne Luke ja auch gerne mal "Klugscheißer", aber dein letzter Beitrag verfehlt sein Ziel wohl meilenweit... :roll:

Sharky 27. Jun 2006 10:16

Re: Combobox nicht 1. Geige
 
Zitat:

Zitat von Privateer3000
@ DGL-Luke
du Superschlauer hast wohl alles mit dem Löffel gefressen?!
...
Klar soweit?

Hai Privateer3000,

ändere bitte deinen Ton in der Delphi-PRAXiS :warn:

Privateer3000 27. Jun 2006 12:21

Re: Combobox nicht 1. Geige
 
Danke Sidorion!
Das war was genaues!!
Nochmal zu meiner Wortwahl,
das war wohl nicht nicht hart wie der Angriff von DGL
der !nicht! entfernt wurde.
Es steht wohl keinem zu, zu urteilen warum
und weshalb man Fragen stellt.

Egal wieviel Posts im Avatar stehen.

EDatabaseError 27. Jun 2006 12:29

Re: Combobox nicht 1. Geige
 
kleine Frage ZUM Thema funktioniert es jetzt ?!?

DGL-luke 27. Jun 2006 13:51

Re: Combobox nicht 1. Geige
 
ähm... sorry, wenns so rüberkam, aber ich hatte auf keine fall die absicht, dich irgendwie zu veräppeln! Ich hatte beim ersten Post wegen deines Schreibstils gemeint, du wärst noch Anfänger, und deswegen EDBErrs Aussagen etwas konkretisiert(Seine Antwort darauf ist auch ganz schön). Beim zweiten Mal hab ich eben kurz vorm posten noch gesehen, wie viele posts du schon hast...

nachdem wir das problem jetzt kennen:

Es könnte auch helfen, wenn du einen timer mit folgender prozedur erstellst:

Delphi-Quellcode:
procedure CBTimerTimer(Sender: TObject);
begin
(Sender as TTimer).Enabled := false;
Combobox1.SetFocus;
end;
Und den timer im Formshow aktivierst. Du musst dann mit dem Interval ein wenig rumprobieren, damit die Combobox ohne merkbare Verzögerung aktiviert wird. Natürlich ist das dann Symptombehandlung, erspart dir aber, TComboBox abzuleiten.

@Daniel G: Bitte Vierauge, da hab ich mich schon dran gewöhnt.

Privateer3000 28. Jun 2006 12:14

Re: Combobox nicht 1. Geige
 
Danke
diese version mit dem Timer funktioniert tatsächlich
eine leichte verzögerung reicht aus.
Ich denke aber mal auch das dies Rechnerabhängig sein wird.
Als zweite Lösung ist auch richtig
die box zur Laufzeit zu überschreiben.
Allerdings ist mir unbekannt wie sich andere Plattformen
also ältere Winversionen da verhalten.
Kann es auch nicht testen.

Noch mal zum Disput: für mich ist das erledigt.
Will keinen Streit.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:26 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