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 TABSTOP-Problem bei Panels (https://www.delphipraxis.net/63960-tabstop-problem-bei-panels.html)

silentAMD 25. Feb 2006 09:41


TABSTOP-Problem bei Panels
 
hi,

habe vor einiger zeit ein programm von einem kumpel geschickt bekommen (taschenrechner). dieser taschenrechner hat panels für die zahleneingabe des taschenrechners (1,2,3..) und man kann sie per "tab" anwählen und mit enter oder leertaste anklicken.
nun habe ich auch versucht mit panels einen taschenrechner zu programmieren, aber ich kann die panels nicht mittels tab anwählen!! habe auch schon die tabstop auf true gesetzt, aber es wird nichts ausgeführt wenn ich auf dem panel bin und enter drücke...


PLEASE HELP!

gfjs 25. Feb 2006 10:44

Re: TABSTOP-Problem bei Panels
 
Wenn Du Dich mit >TAB< bewegen willst, musst Du auch >Tab< drücken und nicht >Enter<. Wenn Du mit >Enter< etwas bewirken willst (z.B. Übernehmen des Wertes), dann musst Du das dem Panel auch ausdrücklich sagen.

mfg Gfjs

silentAMD 25. Feb 2006 10:47

Re: TABSTOP-Problem bei Panels
 
Zitat:

Zitat von gfjs
Wenn Du Dich mit >TAB< bewegen willst, musst Du auch &gt;Tab&lt; drücken und nicht &gt;Enter&lt;.

so blöd bin ich auch wieder nicht... :?


Zitat:

Zitat von gfjs
Wenn Du mit &gt;Enter&lt; etwas bewirken willst (z.B. Übernehmen des Wertes), dann musst Du das dem Panel auch ausdrücklich sagen.


bitte etwas ausführlicher... falls du einen onclick-befehl meinst, den hab ich schon eingebaut...

gfjs 25. Feb 2006 11:00

Re: TABSTOP-Problem bei Panels
 
Sorry :oops: , ich sitze im Büro und habe nur nebenbei einmal kurz ins Forum geschaut und den ersten Teil des Satzes überlesen. :wall: Also, nimm's mir bitte nicht übel.

Auf meinem Bürorechner habe ich kein Delphi installiert und kann nichts ausprobieren. Aber wenn ich probier's nachmittags mal aus, wenn ich zu Hause bin.

mfg gfjs

Sharky 25. Feb 2006 11:17

Re: TABSTOP-Problem bei Panels
 
Hai silentAMD,

bist Du sicher das es mit Panels gemacht wurde? Das ich recht ungewöhnlich. Buttons wären doch viel besser.
Aber egal. Das "Problem" ist das ein Panel kein OnKeypress oder ähnliches kennt und das OnClick nur beim klicken mit der Maus reagiert.

Du musst also im OnKeyDown der Mainform auf die Tastendrücke reagieren (KeyPreview := True).
Das ganze könnte zum Beispiel so aussehen:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  KeyPreview := True;
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (Key = VK_RETURN) or (Key = VK_SPACE) then
  begin
    if (ActiveControl is TPanel) then
    begin
      (ActiveControl as TPanel).OnClick (ActiveControl);
    end;
  end;
end;

procedure TForm1.AllePannelEnter(Sender: TObject);
begin
  (Sender as TPanel).BorderStyle := bsSingle;
end;

procedure TForm1.AllePannelExit(Sender: TObject);
begin
  (Sender as TPanel).BorderStyle := bsNone;
end;

procedure TForm1.AllePannelClick(Sender: TObject);
begin
  (Sender as TPanel).SetFocus; // Focus bei Mausklick
  ShowMessage ((Sender as TPanel).Name);
end;

gfjs 25. Feb 2006 12:06

Re: TABSTOP-Problem bei Panels
 
Hallo, silentAMD.

Jetzt sitze ich zu Hause an meinem Rechner und habe mal ein wenig rumprobiert. Im ersten Augenblick dachte ich auch, ich könnte mich mit >Tab< nicht von Panel zu Panel bewegen. Dann habe ich bemerkt, dass sich die Panels beim Anspringen mit >Tab< nicht verändern, so dass ich es einfach nicht bemerkt habe. Habe dann in das onEnter-Ereignis "Panel1.Color := clRed" eingegeben - und siehe da: von Panel zu Panel mit >Tab< funktioniert. Die Behandlung der Enter- bzw. Leertaste hat Dir Sharky schon beschrieben (besser, als ich es gekonnt hätte).

Noch viel Spaß und schönes Wochenende.

mfg gfjs

silentAMD 25. Feb 2006 14:55

Re: TABSTOP-Problem bei Panels
 
thx @all: ich werde es mal ausprobieren :thumb:

ich bin mir aber ziehmlcih sicher, dass mein kumpel, der mir den taschenrechner geschickt hat, das mit Sharky's idee sicher nicht hätte machen können :wink:


nochmal danke für die schnelle antwort
mfg
ingo


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