![]() |
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 |
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 |
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!! |
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) |
Re: Combobox nicht 1. Geige
EDBErr meint wohl, dass die Checkbox aktiviert (enabled = true) und sichtbar (visible = true) sein muss.
|
Re: Combobox nicht 1. Geige
|
Re: Combobox nicht 1. Geige
in der Tat, trifft beides zu! Beides ist enabled.
ich kann es mir auch nicht erklären. |
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...
|
Re: Combobox nicht 1. Geige
ja oder in der form datei vertauschen
|
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 :) |
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 ;-)
|
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.
|
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. |
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: |
Re: Combobox nicht 1. Geige
Zitat:
ändere bitte deinen Ton in der Delphi-PRAXiS :warn: |
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. |
Re: Combobox nicht 1. Geige
kleine Frage ZUM Thema funktioniert es jetzt ?!?
|
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:
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.
procedure CBTimerTimer(Sender: TObject);
begin (Sender as TTimer).Enabled := false; Combobox1.SetFocus; end; @Daniel G: Bitte Vierauge, da hab ich mich schon dran gewöhnt. |
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