Autor Beitrag
MeierZwoo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 94
Erhaltene Danke: 11

Win 7, DOS5
Delphi 2007 Architect, BP7/TP5, LISP, PS
BeitragVerfasst: 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.

user defined image
MeierZwoo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 94
Erhaltene Danke: 11

Win 7, DOS5
Delphi 2007 Architect, BP7/TP5, LISP, PS
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 94
Erhaltene Danke: 11

Win 7, DOS5
Delphi 2007 Architect, BP7/TP5, LISP, PS
BeitragVerfasst: Fr 09.08.13 19:58 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 09.08.13 20:05 
Ich meinte die Checkboxen, an die du geschrieben hast "Soll aber nicht". ;-)
Gerd Kayser
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 632
Erhaltene Danke: 121

Win 7 32-bit
Delphi 2006/XE
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 94
Erhaltene Danke: 11

Win 7, DOS5
Delphi 2007 Architect, BP7/TP5, LISP, PS
BeitragVerfasst: Fr 09.08.13 21:02 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
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.

user profile iconGerd Kayser hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 632
Erhaltene Danke: 121

Win 7 32-bit
Delphi 2006/XE
BeitragVerfasst: Fr 09.08.13 23:43 
user profile iconMeierZwoo hat folgendes geschrieben Zum zitierten Posting springen:
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:

ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 94
Erhaltene Danke: 11

Win 7, DOS5
Delphi 2007 Architect, BP7/TP5, LISP, PS
BeitragVerfasst: 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 :)