Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi TabOrder überschreiben (https://www.delphipraxis.net/33244-taborder-ueberschreiben.html)

Urba 3. Nov 2004 22:45


TabOrder überschreiben
 
Hallo Leute,

Ich mal wieder. Dieses Mal geht mein Problem um die TabOrder. Es ist an sich ja eine wunderschöne Sache, nur für meine Bedürfnisse nicht ausreichend bzw. fehlerhaft.

Ich würde gerne selbst festlegen welche nach welcher Komponente angefocust wird. Leider reagiert mein Editfeld nicht auf VK_TAB. Auch bei KeyPress und #09 keine Regung. Weiß jemand wie ich dafür sorgen kann dass er darauf reagiert ?

Ein kleines Beispiel wie ich mir das vorstelle :

Edit1 -> Edit3 -> Edit1 -> Edit2

Hat zwar an sich keinen Sinn, aber es soll ja nur als Beispiel dienen. Mir geht es einfach nur um das Prinzip wie ich das lösen könnte.

Würde mich über eine Antwort freuen.

Gruss
Urba

Brüggendiek 3. Nov 2004 23:09

Re: TabOrder überschreiben
 
Hallo Urba!

Normalerweise bekommen die Komponenten die Tabulatorpositionen in der Reihenfolge des Erstellens.

Im OI kannst Du die TabOrder einstellen - beginnend bei 0. Wenn Du eine besetzte Nummer nimmst, rutschen alle anderen Komponenten nach unten.
Also die erste Komponente aktivieren, 0 eintragen. Dan die 2. mit 1 usw. bis alle versorgt sind.

Wenn das dynamisch sein soll (also der Nachfolger ist jeweils vom Inhalt abhängig) mußt Du im OnExit-Ereignis den Focus entsprechend setzen.

Gruß

Dietmar Brüggendiek

Urba 3. Nov 2004 23:31

Re: TabOrder überschreiben
 
klasse danke schön :-D warum kompliziert denken wenn es auch so einfach geht :lol:

Gruss
Urba

Luckie 4. Nov 2004 01:23

Re: TabOrder überschreiben
 
Und es geht noch einfacher. Mach mal einen Rechtsklick auf dein Formular mit den Komponenten und dann kuck dir mal den Eintrag "Taborder..." an. ;)

Urba 4. Nov 2004 01:37

Re: TabOrder überschreiben
 
Hallo Luckie,

Normalerweise kenne ich dich als jemand der immer alles genau liest :shock: :lol:

Mein oben genanntes Beispiel wirst du auf diese Weise nicht hinbekommen :twisted:

Also ciao
Urba

Luckie 4. Nov 2004 01:44

Re: TabOrder überschreiben
 
Oh, sorry. Ich dachte nur als alternative für die statische Methode von Brüggendiek.

SirThornberry 4. Nov 2004 07:20

Re: TabOrder überschreiben
 
du musst von TEdit ableiten und eine Message abfangen
Delphi-Quellcode:
  TTabEdit = class(TEdit)
  private
    procedure FWMGETDLGCODE(var Msg : TWMGetDlgCode); message wm_GetDlgCode;
  end;
[...]
procedure TTabEdit.FWMGETDLGCODE(var Msg : TWMGetDlgCode);
begin
  inherited;
  Msg.Result := Msg.Result or DLGC_WANTTAB;
end;
Anschließend bekommst du im OnKeyPress etc. auch das Event wenn die Tab-Taste gedrückt wird

Urba 4. Nov 2004 20:55

Re: TabOrder überschreiben
 
hat sich alles schon erledigt, aber wieso soll ich es wie in deinem Vorschlag so kompliziert machen wenn es mit "setFocus" und "onExit" so schön einfach geht ?

SirThornberry 5. Nov 2004 17:53

Re: TabOrder überschreiben
 
Hmm, war zu einfach um das ich auf die Idee gekommen wäre..


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