TColorButton, Farbtabellenauswahl unterdrücken

Rund um die LCL und andere Komponenten
Luckner
Beiträge: 88
Registriert: Sa 18. Jan 2020, 09:56
OS, Lazarus, FPC: Winux (L 2.2.0 FPC 3.2.2)
CPU-Target: Windows 64-Bit

TColorButton, Farbtabellenauswahl unterdrücken

Beitrag von Luckner »

Hallo,
benutze im meinem Programm die Komponente TColorButton. Es macht das, was ich will, jedoch bei OnClick wird die Tabelle mit der Farbauswahl angezeigt. Läßt sich das irgendwie unterdrücken? Wenn nicht, gibt es ein anderes, vergleichbares TColorButton ohne diese Eigenschaftz?

Danke, Luckner

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: TColorButton, Farbtabellenauswahl unterdrücken

Beitrag von theo »

Luckner hat geschrieben:
Fr 5. Aug 2022, 14:30
benutze im meinem Programm die Komponente TColorButton. Es macht das, was ich will.
Das ist ein Farbauswahlbutton, nicht einfach ein farbiger Button.
Wie kann der "das machen, was du willst", wenn du gar keinen Farbauswahlbutton haben willst?

Einen farbigen Button gibt es z.B. als TCDButton, im mitgelieferten, aber nicht automatisch installierten Package "customdrawn".
Unter Linux kann man auch dem normalen TButton eine Farbe geben, unter Windows nicht.

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: TColorButton, Farbtabellenauswahl unterdrücken

Beitrag von Winni »

Hi!

Nimm einen Speedbutton oder einen BitBtn und verpasse dem eine farbige Bitmap unter der property "Glyph". Fertig.

Winni

Luckner
Beiträge: 88
Registriert: Sa 18. Jan 2020, 09:56
OS, Lazarus, FPC: Winux (L 2.2.0 FPC 3.2.2)
CPU-Target: Windows 64-Bit

Re: TColorButton, Farbtabellenauswahl unterdrücken

Beitrag von Luckner »

Ich finde die Checkbox nicht schlecht um optisch Etwas hervor zu heben. Ein BitBtn ist etwas aufwendiger, aber es würde gehen.

Gruß, Luckner

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: TColorButton, Farbtabellenauswahl unterdrücken

Beitrag von Winni »

Hi!

Hier ist mal ein Beispiel, wie man eine SpeedButton sich selbst zeichnen lässt:

Code: Alles auswählen

procedure TForm1.SpeedButton4Paint(Sender: TObject);
const cap = '60° Grad';
var
  dx, dy: Integer;
begin
  with SpeedButton4.glyph do
    begin
    SetSize(SpeedButton4.width -4,SpeedButton4.height -4);
    canvas.Brush.Color:= clAqua;
    canvas.FillRect(0,0,width,height);
    Canvas.Font.Height:= 14;
    dx := (width-canvas.TextWidth(cap)) div 2;
    dy := (height -canvas.TextHeight(cap)) div 2;
    Canvas.TextOut (dx,dy,cap);
    end;
end;   
Der Speedbutton sollte auf die Größe eines normalen Button aufgezogen werden.

Waschmaschinen-Beschriftung und Farbe bei Bedarf ändern.

In das Onpaint-Event des Speedbuttons einhängen.

Winni

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

Re: TColorButton, Farbtabellenauswahl unterdrücken

Beitrag von wp_xyz »

Luckner hat geschrieben:
Fr 5. Aug 2022, 14:30
benutze im meinem Programm die Komponente TColorButton. Es macht das, was ich will, jedoch bei OnClick wird die Tabelle mit der Farbauswahl angezeigt. Läßt sich das irgendwie unterdrücken?
Hmmm... Also ich kann mir jetzt nicht vorstellen, wie ein ColorButton funktionieren soll, bei dem sich kein Farbauswahl-Dialog öffnet. Oder meinst du eher die TColorBox von der Additional-Palette? Das ist eine gute, alte Combobox, bei der jede Farbe einen Eintrag hat (trotzdem könntest du auch hier für mehr Farben den Farbauswahl-Dialog anzeigen, wenn die Option cbCustomColor in Style ausgewählt ist). Und es gibt auch noch die TColorListbox.

TBug
Beiträge: 177
Registriert: Mi 2. Sep 2015, 11:09
OS, Lazarus, FPC: Lazaurus 2.2.4 FPC 3.2.2
CPU-Target: Windows 32/64bit

Re: TColorButton, Farbtabellenauswahl unterdrücken

Beitrag von TBug »

Hallo zusammen,
Luckner hat geschrieben:
Fr 5. Aug 2022, 14:30
Läßt sich das irgendwie unterdrücken?
Ganz einfach so, wie man (fast) alles unterdrücken kann!

Code: Alles auswählen

procedure TFRMMain.ColorButton1Click(Sender: TObject);
begin
  Abort;
end; 
.

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: TColorButton, Farbtabellenauswahl unterdrücken

Beitrag von Winni »

TBug hat geschrieben:
Fr 5. Aug 2022, 21:14
Hallo zusammen,
Luckner hat geschrieben:
Fr 5. Aug 2022, 14:30
Läßt sich das irgendwie unterdrücken?
Ganz einfach so, wie man (fast) alles unterdrücken kann!

Code: Alles auswählen

procedure TFRMMain.ColorButton1Click(Sender: TObject);
begin
  Abort;
end; 
.


Genau!

Immer schön mit der Bierflasche die Nägel in die Wand kloppen!
Kopfschüttel!

Winni

TBug
Beiträge: 177
Registriert: Mi 2. Sep 2015, 11:09
OS, Lazarus, FPC: Lazaurus 2.2.4 FPC 3.2.2
CPU-Target: Windows 32/64bit

Re: TColorButton, Farbtabellenauswahl unterdrücken

Beitrag von TBug »

@Winni
Winni hat geschrieben:
Fr 5. Aug 2022, 21:55
Immer schön mit der Bierflasche die Nägel in die Wand kloppen!
Kopfschüttel!
Was ist in Deinen Augen denn so verwerflich am Einsatz der Abort-Prozedur?

Und vor allem dann, wenn es keine elegantere Möglichkeit gibt ohne Nebenwirkungen eine Aktion zu beenden?
.

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: TColorButton, Farbtabellenauswahl unterdrücken

Beitrag von Winni »

Hi!

Thilo hat es erklärt:

Es ist schlicht das falsche Werkzeug, wenn man nur einfach einen bunten Button haben möchte.

Ich habe auf Alternativen hingewiesen.
Und kurz mal einen selbst-zeichnenden SpeedButton angeboten.

Der TColorButton ist für die Farbauswahl. Und nicht, weil man einen bunten Button haben möchte,

Wenn man abort benötigt, so muss man sich überlegen, was man vorher falsch gemacht hat. Ich hab's über 35 Jahre nicht mehr benutzt.

Winni

TBug
Beiträge: 177
Registriert: Mi 2. Sep 2015, 11:09
OS, Lazarus, FPC: Lazaurus 2.2.4 FPC 3.2.2
CPU-Target: Windows 32/64bit

Re: TColorButton, Farbtabellenauswahl unterdrücken

Beitrag von TBug »

Hallo zusammen,
Winni hat geschrieben:
Sa 6. Aug 2022, 19:03
Der TColorButton ist für die Farbauswahl. Und nicht, weil man einen bunten Button haben möchte,
So einfach sollte man es sich meiner Meinung nach nicht machen., denn es gibt gute Gründe dafür einen TColorButton zu nutzen und in bestimmten Fällen eben kein Öffnen des ColorDialogs auszulösen.

Ich habe zum Beispiel einige Datenbankanwendungen bei denen ich den TColorButton einsetze, um die Farben auszusuchen, welche dann in einem Datenbankfeld hinterlegt werden. Befindet sich aber die Datenbank nicht im Edit- oder Insertmodus, dann soll der TColorButton die Farbe anzeigen, aber das Auswahlfenster soll nicht erscheinen.

Natürlich könnte man hier wiederum andere Komponenten auswählen und diese in mühevoller Kleinarbeit mit unnötig zu schreibendem Code zusammenstücken, um dies zu erreichen, was man mit einem schlichten Abort in einer Zeile Code erreicht hätte.

Das Gleiche gilt bei mir für TDBComboBox oder TDBLookuoComboBox. Auch hier wird das Aufklappen des Selektionsfensters unterbunden, wenn die Datenbank nicht editeirt werden soll. Hier schlägt dann auch klassisch das Abort zu.

Ich sehe keine negativen Nebenwirkungen eines Aborts und sortiere es in eine Reihe mit anderen Abbruchritualen wie break und exit.
Das ist aber nur meine Meinung.

.

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

Re: TColorButton, Farbtabellenauswahl unterdrücken

Beitrag von wp_xyz »

Wieso nimmt man, um eine Farbe nur anzuzeigen, einen ColorButton? Das ist doch mit Kanonen auf Spatzen geschossen. Nimm doch einfach ein TShape und setze Brush.Color auf die gewünschte Farbe. Das ist eine einzige Zeile Code.

TBug
Beiträge: 177
Registriert: Mi 2. Sep 2015, 11:09
OS, Lazarus, FPC: Lazaurus 2.2.4 FPC 3.2.2
CPU-Target: Windows 32/64bit

Re: TColorButton, Farbtabellenauswahl unterdrücken

Beitrag von TBug »

Hallo,
wp_xyz hat geschrieben:
Sa 6. Aug 2022, 20:03
Wieso nimmt man, um eine Farbe nur anzuzeigen, einen ColorButton? Das ist doch mit Kanonen auf Spatzen geschossen. Nimm doch einfach ein TShape und setze Brush.Color auf die gewünschte Farbe. Das ist eine einzige Zeile Code.
Um eine Farbe nur anzuzeigen wurden dem TE ja bereits andere Lösungen aufgezeigt.

Wenn ich eine Farbe nur anzeigen lassen möchte, dann nehme ich persönlich ein TPanel.
Da könnte man dann bei Bedarf sogar noch den Farbcode, in welcher Darstellungsform auch immer, gleich mit anzeigen.
.

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

Re: TColorButton, Farbtabellenauswahl unterdrücken

Beitrag von wp_xyz »

TBug hat geschrieben:
Sa 6. Aug 2022, 20:24
Wenn ich eine Farbe nur anzeigen lassen möchte, dann nehme ich persönlich ein TPanel.
Da könnte man dann bei Bedarf sogar noch den Farbcode, in welcher Darstellungsform auch immer, gleich mit anzeigen.
Ja, auch ne Möglichkeit.

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: TColorButton, Farbtabellenauswahl unterdrücken

Beitrag von Winni »

Hi!

Wer Teile der Funktionalität von Komponenten mit abort abwürgt, hat leider das Prinzip nicht kapiert und sich außerdem zu wenig umgesehen.

Im Tab "Dialogs" ist der TColorDialog zu finden. Das ist wohl das, was Du für eine saubere Programmierung benötigst.

Winni

PS.: Und der Sänger von Powerwolf in Wacken muss moch fleissig das Ti-Aitsch üben. Tag der Dilettanten. Läuft gerade nebenbei.

Antworten