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 Unschönes Perform (WM_NEXTDLGCTL,0,0) wenn edit dis-/enabled (https://www.delphipraxis.net/58462-unschoenes-perform-wm_nextdlgctl-0-0-wenn-edit-dis-enabled.html)

vt670 7. Dez 2005 14:52


Unschönes Perform (WM_NEXTDLGCTL,0,0) wenn edit dis-/enabled
 
Hallo,
in einem Formular befinden sich mehrere Edit's *1) bei denen mit Tab oder Enter zum nächsten Edit gesprungen werden soll.
Abhängig von der EIngabe des aktiven Edit werden die Nachfolgenden enabled bzw disabled.
Enable ich nun den Nachfolgenden und springe den mit Perform (WM_NEXTDLGCTL,0,0) an, verhält es sich genau umgekehrt er springt nicht zu dem Nachfolger sondern zu dem vorherigen Edit.
Im Debugger werden die TabStop's und TabOrder korrekt angezeigt.
Hat jemand eine Erklärung dafür oder gar eine Lösung?
Vielen Dank fürs lesen








*1) Tatsächlich handelt es sich um TCurrencyEdit aus der RxLib abgeleitet von TMAskEdit

Luckie 7. Dez 2005 15:03

Re: Unschönes Perform (WM_NEXTDLGCTL,0,0) wenn edit dis-/ena
 
Ich benutze immer folgende Routine um Windows Kontrolls zu deaktivieren:
Delphi-Quellcode:
function EnableControl(hParent: THandle; ID: DWORD; Enable: Boolean): LongBool;
var
  hWnd                  : THandle;
begin
  hWnd := GetFocus;
  // jump to next control if control to disable has the focus
  // otherwise we will get stuck and TAB won't work
  if hWnd = GetDlgItem(hParent, ID) then
    SendMessage(hParent, WM_NEXTDLGCTL, 0, 0);
  result := EnableWindow(GetDlgItem(hParent, ID), Enable);
end;

vt670 8. Dez 2005 09:19

Re: Unschönes Perform (WM_NEXTDLGCTL,0,0) wenn edit dis-/ena
 
Hallo Luckie,

danke für den Tipp. Werde die funktion heute morgen mal einbauen und austesten.
Zwar sehe ich auf anhieb keinen zusammenhang mit dem Problem aber man wiess ja nie ;-)
Ich hatt vermutet das Windows bei einem disable die TabOrder ändert und bei einem enable
diese falsch reproduziert. Mal sehen wie es sich hier verhält.
Danke für deine mühe und
viele grüsse
vt


Zitat:

Zitat von Luckie
Ich benutze immer folgende Routine um Windows Kontrolls zu deaktivieren:
Delphi-Quellcode:
function EnableControl(hParent: THandle; ID: DWORD; Enable: Boolean): LongBool;
var
  hWnd                  : THandle;
begin
  hWnd := GetFocus;
  // jump to next control if control to disable has the focus
  // otherwise we will get stuck and TAB won't work
  if hWnd = GetDlgItem(hParent, ID) then
    SendMessage(hParent, WM_NEXTDLGCTL, 0, 0);
  result := EnableWindow(GetDlgItem(hParent, ID), Enable);
end;


vt670 8. Dez 2005 09:43

Re: Unschönes Perform (WM_NEXTDLGCTL,0,0) wenn edit dis-/ena
 
Nochmal an Luckie

tatsächlich hat es daran gelegen. Wer hätte das gedacht.

recht herzlichen dank
vt


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:25 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 by Thomas Breitkreuz