clNone

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
wennerer
Beiträge: 352
Registriert: Di 19. Mai 2015, 20:05
OS, Lazarus, FPC: Linux Mint 20 Cinnamon, Lazarus Stable 2.2.0 (rev lazarus_2_2_0) FPC 3.2.2 x86_
CPU-Target: x86_64-linux-gtk2

clNone

Beitrag von wennerer »

Hallo liebes Forum,
ich spiele gerade an einer Komponente herum in der man zum Beispiel eine Border sichtbar und unsichtbar machen können soll. Jetzt kam mir der Gedanke das ich die Eigenschaft BorderVisible (ShowBorder) einsparen könnte in dem ich einfach die Farbe auf clNone setze. Könnte man ja so machen:

Code: Alles auswählen

if BorderColor <> clNone then DrawBorder;
Ich frag mich jetzt nur ob das wirklich eine gute Idee ist. Zum Einen spare ich mir halt die Eigenschaften im ObjektInspektor, ich möchte da natürlich mehrere Sachen sichtbar und unsichtbar machen können. Auf der Anderen Seite denke ich das könnte auch verwirrend sein. Über Meinungen würde ich mich sehr freuen.
Und dann noch die Frage für was ist clNone denn eigentlich gedacht?

Viele Grüße
Bernd

wp_xyz
Beiträge: 4092
Registriert: Fr 8. Apr 2011, 09:01

Re: clNone

Beitrag von wp_xyz »

Gute Frage...

Ich denke: für genau das, was du beschreibst, nämlich die Möglichkeit etwas nicht darzustellen, wenn man kein separates ShowXXXX-Property einführen will (wobei ich mich wiederum frage, warum man das nicht wollen könnte). Irgendwie redundant das Ganze...

Ich würde sagen: Wenn du unbedingt die Größe der lfm-Datei minimal haben musst, nimm clNone. In allen anderen Fällen, nimm ShowXXXX, das ist viel klarer.

Wenn es mehrere ShowXXXX-Properties gibt, oder allgemeiner sogar: mehrere boolsche Properties, kannst du ja auch "Options" einführen.

wennerer
Beiträge: 352
Registriert: Di 19. Mai 2015, 20:05
OS, Lazarus, FPC: Linux Mint 20 Cinnamon, Lazarus Stable 2.2.0 (rev lazarus_2_2_0) FPC 3.2.2 x86_
CPU-Target: x86_64-linux-gtk2

Re: clNone

Beitrag von wennerer »

Okay, das ist doch mal eine klare Meinung. Ich war halt etwas hin und her gerissen da halt die Eigenschaften oftmals im OI weit auseinander liegen (BorderColor, BorderWidth und dann ShowBorder).
Meinst du mit "Options" einführen so was wie hier wo alle Einstellungen für die Scale1 zu finden sind?
Oi.png
Oi.png (22.2 KiB) 335 mal betrachtet
Vielen Dank!
Bernd

wp_xyz
Beiträge: 4092
Registriert: Fr 8. Apr 2011, 09:01

Re: clNone

Beitrag von wp_xyz »

TScale schein hier eine eigene Klasse zu sein. Der Objekt-Inspektor zeigt alle in Frage kommenden Properties einer Klasse (genauer: TPersistent) gemeinsam an. Genau - das ist eine Möglichkeit, mehrere zusammengehörende Properties auch zusammenzuhalten. Wenn es sich nur um boolsche Properties handelt, kannst du dafür auch eine Menge (Set) definieren, was etwas einfacher zu verwalten ist. Der Propertyeditor für jede Menge bewirkt dann, dass im Objektinspektor die Elemente in dem Ausklapp-Feld einzeln zum An- und Abwählen angezeigt werden.

Beispiel: TStringGrid.Options = (goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, ...):

Code: Alles auswählen

type
  TGridOption = (
    goFixedVertLine,    // vertikale Trennlinien der Fixed-Zellen anzeigen
    goFixedHorzLine,    // horizontale Trennlinien der Fixed-Zellen anzeigen
    goVertLine,         // vertikale Trennlinien anzeigen im Zellenfeld
    goHorzLine,         // horizontale Trennlinien anzeigen im Zellenfeld 
    // ... usw.
  );
  TGridOptions = set of TGridOption;
  
  TCustomGrid = class(TCustomControl)
  private
    FOptions: TGridOptions;
    procedure SetOptions(AValue: TGridOptions);
    ...
    property Options: TGridOptions read FOptions write SetOptions;

wennerer
Beiträge: 352
Registriert: Di 19. Mai 2015, 20:05
OS, Lazarus, FPC: Linux Mint 20 Cinnamon, Lazarus Stable 2.2.0 (rev lazarus_2_2_0) FPC 3.2.2 x86_
CPU-Target: x86_64-linux-gtk2

Re: clNone

Beitrag von wennerer »

Danke für dein Beispiel.
Set's hatte ich jetzt gar nicht auf den Schirm obwohl ich die ja bei z. Bsp. Font Style schon öfter gesehen habe. Ist echt eine elegante Möglichkeit Eigenschaften zusammen zufassen.

Viele Grüße
Bernd

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1013
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Winux (L 2.0.11 FPC 3.2)
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: clNone

Beitrag von fliegermichl »

wennerer hat geschrieben:
Sa 27. Nov 2021, 20:03
Danke für dein Beispiel.
Set's hatte ich jetzt gar nicht auf den Schirm obwohl ich die ja bei z. Bsp. Font Style schon öfter gesehen habe. Ist echt eine elegante Möglichkeit Eigenschaften zusammen zufassen.

Viele Grüße
Bernd
Und benötigt für jeden Eintrag des Sets nur ein Bit. Eine entsprechende Anzahl boolscher Variablen braucht für jede ein Byte.
Man muß allerdings dazu wissen, daß FPC für jedes Set 4 Bytes reserviert (Standard)
Man kann das mit der Direktive {$PACKSET x} aber anpassen.

wennerer
Beiträge: 352
Registriert: Di 19. Mai 2015, 20:05
OS, Lazarus, FPC: Linux Mint 20 Cinnamon, Lazarus Stable 2.2.0 (rev lazarus_2_2_0) FPC 3.2.2 x86_
CPU-Target: x86_64-linux-gtk2

Re: clNone

Beitrag von wennerer »

@fliegermichl
ich danke dir für die Info. Werde ich ausprobieren.

Viele Grüße
Bernd

Antworten