Autor |
Beitrag |
MeierZwoo 
      
Beiträge: 94
Erhaltene Danke: 11
Win 7, DOS5
Delphi 2007 Architect, BP7/TP5, LISP, PS
|
Verfasst: Fr 09.08.13 17:45
AllowAllUp
wirkt nur auf die Gruppenbildung und auch nur bei GroupIndex>0.
Der GroupIndex hat damit auch nichts zu tun.
Die Eigenschaft Flat soll das "eindrücken" verhindern oder ermöglichen, tut es aber nicht.
Mit "Eindrücken" meine ich das optische Bewegen beim Anklicken wie bei einem normalen Button, der sich beim Anklicken scheinbar versenkt, danache wieder erhaben wird.
Dies ist bei Buttions ja ok, bei CheckBoxen und RadioButtons aber falsch, denn dort ändert sich nur der Inhalt (Mit Haken oder ohne Haken bzw. mit Punkt oder ohne Punkt) aber nicht die scheinbare optische Höhe gegenüber der Basisfläche.

|
|
MeierZwoo 
      
Beiträge: 94
Erhaltene Danke: 11
Win 7, DOS5
Delphi 2007 Architect, BP7/TP5, LISP, PS
|
Verfasst: Fr 09.08.13 18:01
Ich dachte, die Eigenscgaften, die dies regeln, seine bekannt nur ICH finde die nicht. Für ein Beispiel muß ich erst ein Demo-Projekt anlegen ...
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 09.08.13 19:13
Das sieht aus wie die Fokusmarkierung, wenn ich mich an die graue Vorzeit ohne Themes richtig erinnere. Da musst du im OnClick den Fokus woandershin setzen.
|
|
MeierZwoo 
      
Beiträge: 94
Erhaltene Danke: 11
Win 7, DOS5
Delphi 2007 Architect, BP7/TP5, LISP, PS
|
Verfasst: Fr 09.08.13 19:58
jaenicke hat folgendes geschrieben : | Das sieht aus wie die Fokusmarkierung |
SpeedButtons haben/erhalten keinen Focus. Das ist ja der Grund, weshalb sie mir in diesem speziellen Abwendungsfall vorgeschlagen wurden uns ich sie auch benutzen möchte.
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 09.08.13 20:05
Ich meinte die Checkboxen, an die du geschrieben hast "Soll aber nicht". 
|
|
Gerd Kayser
      
Beiträge: 632
Erhaltene Danke: 121
Win 7 32-bit
Delphi 2006/XE
|
Verfasst: Fr 09.08.13 20:12
Wenn die nachgebildeten Checkboxen diesen Klickeffekt haben, dann verwende halt Panels. Ein Beispiel, wie das aussehen könnte, findest Du im Anhang.
Einloggen, um Attachments anzusehen!
|
|
MeierZwoo 
      
Beiträge: 94
Erhaltene Danke: 11
Win 7, DOS5
Delphi 2007 Architect, BP7/TP5, LISP, PS
|
Verfasst: Fr 09.08.13 21:02
jaenicke hat folgendes geschrieben : | Ich meinte die Checkboxen, an die du geschrieben hast "Soll aber nicht".  |
Diese CheckBoxen sind keine CheckBoxen, sondern EIN SpeedButton mit der Grafik einer CheckBox und den drei Stadien vorm Klicken [ ], beim Klicken [x] und nach dem Klicken[x] um zu zeigen, wie es sich beim Klick eindrückt.
Gerd hatte ja gesagt, ich können CheckBoxen und RadioButtons per SpeedButtons in deren Lock ersetzen, um mein Focus-Problem los zu werden, da SpeedButtons keinen Focus erhalten.
Gerd Kayser hat folgendes geschrieben : | Wenn die nachgebildeten Checkboxen diesen Klickeffekt haben, dann verwende halt Panels. |
Dann verliere ich grade bei den gruppierten RadioButtons ja alle Gruppeneigenschaften und muß diese gegenseitigen Abhängigkeiten nachflicken. Ich dachte, Du wüßtest wie man RadioButtons und CheckBoxen aus SpeedButtons nachbildet, ohne daß die sich beim Klicken versenken, weil der Vorschlag ja von dir kam.
Da ist meine augenblickliche Lösung, mit einer Zeile pro OnKlick den Focus zu killen, immer noch die simpelste Lösung. Und da die CheckBoxen eh duch Buttons, in diesem Fall SpeedButtons ersetzt werden sollen, die sich ja reindrücken sollen ist das Focus-Problem damit erstmal aus der Welt.
Danke für die Antworten 
|
|
Gerd Kayser
      
Beiträge: 632
Erhaltene Danke: 121
Win 7 32-bit
Delphi 2006/XE
|
Verfasst: Fr 09.08.13 23:43
MeierZwoo hat folgendes geschrieben : | Dann verliere ich grade bei den gruppierten RadioButtons ja alle Gruppeneigenschaften und muß diese gegenseitigen Abhängigkeiten nachflicken. |
SpeedButtons beim Klicken versinken nun einmal kurz. Wenn Dich dieser kleine Schönheitsfehler stört, mach's halt zum Beispiel mit Panels. Im nachfolgenden Beispielprogramm verwende ich den Zeichensatz Webdings 2, um ein Kreuzchen anzuzeigen. Die Tag-Eigenschaft wird verwendet, um eine Gruppe zu bilden. Innerhalb der Gruppe sind die Panels aufsteigend nummeriert.
Beispiel Gruppe 1: 1. Panel hat den Tag-Wert 10, das nächste 11 usw.
Bei der Gruppe 2 analog 20, 21, 22.
Die Zehnerstelle gibt also die Gruppe an. Dadurch, dass jedes Panel einen eigenen und einmaligen Tag-Wert hat, kann man beim Programmstart jedes Panel gezielt ansprechen und den Status "gesetzt" oder "nicht gesetzt" aus einer Ini-Datei auslesen und im Programm entsprechend den Status der Panels setzen bzw. beim Programmende auslesen (hier im Programmbeispiel nicht implementiert).
Das Hin- und Herschalten bei den einzelnen Panels sieht so aus:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| procedure TForm1.PanelGroupClick(Sender: TObject); var Schleife : integer; Merken : string; Gruppe : integer; begin with Sender as TPanel do begin Merken := TPanel(Sender).Caption; Gruppe := TPanel(Sender).Tag div 10; end;
for Schleife := 0 to ComponentCount - 1 do if (Components[Schleife] is TPanel) and (TPanel(Components[Schleife]).Tag div 10 = Gruppe) then begin TPanel(Components[Schleife]).Caption := ''; end;
TPanel(Sender).Caption := Merken; if TPanel(Sender).Caption = 'Ñ' then TPanel(Sender).Caption := '' else TPanel(Sender).Caption := 'Ñ'; end; |
Anhand des Tag-Wertes könntest Du mit einer Case-Anweisung auf die Änderungen reagieren und entsprechende Eigenschaftswerte in Deinem Programm setzen. Wie Du siehst hält sich der Aufwand sehr in Grenzen.
Einloggen, um Attachments anzusehen!
|
|
MeierZwoo 
      
Beiträge: 94
Erhaltene Danke: 11
Win 7, DOS5
Delphi 2007 Architect, BP7/TP5, LISP, PS
|
Verfasst: Sa 10.08.13 19:31
Gerd, danke, sehr schön. Nur werde ich in diesem Projekt in Hinblick auf die Pflege bei meinem Stil bleiben und merke mir deine Anregungen für später.
Ich habe nun die CheckBoxen durch "selbstgemachte" Buttons ersetzt, bei denen kein Focus vorhanden ist und die Abhängigkeiten von mir selbst gesetzt werden können und nicht durch zig (fremde) sich immer wieder ausschließende bzw. beeinflussende Eigenschaften.
Die beiden Gruppen RadioButtons belasse ich erstmal so mit brutalem killen des Focus.
Ich danke allen für ihre Mühe und Antworten - ich kann nun mit meiner Lösung erstmal leben und mich mit den sachlichen, mathematischen Problemen weiter beschäftigen 
|
|
|