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 button farbig machen?? (https://www.delphipraxis.net/87299-button-farbig-machen.html)

malzeit 26. Feb 2007 17:14


button farbig machen??
 
Hallo wir müssen in Info ein projekt schreiben allerdings bin ich nicht der top Programierer und würde mich freuen wenn ihr mir helfen könntet.
Meine erste frage ist ob mann einen Button eine andere Farbe geben kann????
Und zwar genau dann wenn man ihn angeklickt hat??????

[edit=SirThornberry]Beitragstitel korrigiert - nächstes mal bitte vor dem Absenden wenigstens einen kurzen Blick auf das ganze werfen - Mfg, SirThornberry[/edit]

blablab 26. Feb 2007 17:16

Re: button farbig manchen??
 
Das geht bei nem Button nicht. Der hat immer die Standard-Windows-Farbe...

turboPASCAL 26. Feb 2007 17:21

Re: button farbig manchen??
 
Zitat:

Zitat von blablab
Das geht bei nem Standard Button nicht. Der hat immer die Standard-Windows-Farbe...

Benutze einen Bitmapbutton (BitBnt).


:wall: Achneh, es geht ja nicht um die Schriftfarbe sondern um den Hintergrund.

mkinzler 26. Feb 2007 17:21

Re: button farbig manchen??
 
Stimmt nicht ganz, wenn du das Zeichen selber übernimmst kannst du ihm jede gewünschte Farbe geben.

fkerber 26. Feb 2007 17:26

Re: button farbig manchen??
 
Hi!

Herzlich Willkommen in der DP!

Such mal Bei Google suchenTColorButton!


Ciao, Frederic

DP-Maintenance 26. Feb 2007 17:33

DP-Maintenance
 
Dieses Thema wurde von "alcaeus" von "Windows API / MS.NET Framework API" nach "VCL / WinForms / Controls" verschoben.
Ist eine Frage zu einer VCL-Komponente.

malzeit 27. Feb 2007 11:15

Re: button farbig manchen??
 
naja gut da muss ich mir was anderes ausdenken
ein weiteres problem ist das ich nicht genau weiß wie man ein quader in der image komponente darstellen kann!
Es wäre net wenn ihr mir da mal helfen könntet!

mkinzler 27. Feb 2007 11:18

Re: button farbig manchen??
 
Zeiche den Button selber (ownderdraw), dann kannst du (fast) alles machen.

fkerber 27. Feb 2007 11:19

Re: button farbig manchen??
 
Hi!

Damit es nicht zu unübersichtlich wird:
Für eine neue Frage bitte auch einen neuen Thread aufmachen ;)

Ist dein Problem mit dem farbigen Button jetzt gelöst?


Ciao, Frederic

Neutral General 27. Feb 2007 11:19

Re: button farbig manchen??
 
Hi,

Delphi-Quellcode:
Image.Picture.Bitmap.Canvas.Rectangle(...)
Delphi-Referenz durchsuchenCanvas
Delphi-Referenz durchsuchenRectangle

Schau dir diese Begriffe in der DelphiHilfe mal an ;)

Was auch noch interessant wäre ist:

Delphi-Referenz durchsuchenBrush
Delphi-Referenz durchsuchenPen

Gruß
Neutral General

Marcel_Mars 2. Mär 2007 13:25

Re: button farbig manchen??
 
Hallo
Also ich hab einen runden button mal selber erstellt und dort kann man die Farbe wählen. Wenn du willst kann ich dir den Code mal zeigen.

Freundliche Grüsse
Mars

malzeit 3. Mär 2007 18:00

Re: button farbig manchen??
 
Das wäre cool wenn du mir das mal schicken könntest!!

Marcel_Mars 4. Mär 2007 13:08

Re: button farbig manchen??
 
Hallo

Also erstens must du eine neue Anwendung eröffnen.Dann musst du im Menu Komponente auf ''Neue Komponente'' drücken und dann dort alles einstellen(der namen der Unit muss in Lib gespeichert werden). Dann die Zeilen in der neu erstellten Unit mit der hier ergänzen. Dann mustt du(in komponente) auf Komponente installieren, und dort(die vorhergespeicherte unit OButton.pas) einstellen(unten nichts verstellen!). Jezt auf Ok und dann sollte der Button im Register Zusätzlich sein. Wenn du nicht weisst wie man ein Bitmap eines Symbols ändert kann ich dir das auch noch erklären. Hoffentlich funktionierts bei dir!
Delphi-Quellcode:
unit OButton;

interface

uses
  SysUtils, Classes, Graphics, Controls;

const
  OColor: Array[1..3] of TColor = (clBlack, clGray, clWhite);

type
  TOButton = class(TCustomControl)
  private
    { Private-Deklarationen }
    x,y: Integer;
    FColor: TColor;
    FCaption: String;
    Pressed: Boolean;
  protected
    { Protected-Deklarationen }
    procedure Paint; override;
    procedure MouseDown
      (Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
    procedure MouseUp
      (Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
    procedure SetCaption (OText: String); virtual;
  public
    { Public-Deklarationen }
    constructor Create (AOwner: TComponent); override;
    procedure SetColor (OBrush: TColor); virtual;
  published
    { Published-Deklarationen }
    property OnClick;
    property OnMouseDown;
    property OnMouseUp;
    property OnEnter;
    property OnExit;
    property OnKeyPress;
    property OnKeyDown;
    property OnKeyUp;
    property Caption: String read FCaption write SetCaption;
    property Color: TColor read FColor write SetColor;
  end;

procedure Register;


implementation

constructor TOButton.Create (AOwner: TComponent);
begin
  inherited Create (AOwner);
  FColor := clBtnFace;
  Canvas.Brush.Color := FColor;
  Pressed := false;
  Caption := 'OButton';
  SetBounds (0,0,50,50);
end;

procedure TOButton.SetCaption (OText: String);
begin
  FCaption := OText;
  Repaint;
end;

procedure TOButton.SetColor (OBrush: TColor);
begin
  FColor := OBrush;
  Canvas.Brush.Color := FColor;
  Repaint;
end;

procedure TOButton.MouseDown (Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  inherited MouseDown (Button, Shift, X, Y);
  if Button = mbLeft then
  begin
    Pressed := true;
    Paint;
  end;
end;

procedure TOButton.MouseUp (Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  inherited MouseUp (Button, Shift, X, Y);
  Pressed := false;
  Paint;
end;

procedure TOButton.Paint;
var i: Integer;
begin
  // Position für Anzeige von Caption
  x := (Width - Canvas.TextWidth(Caption)) div 2;
  y := (Height- Canvas.TextHeight(Caption)) div 2;
  // OButton gedrückt
  if Pressed then
    for i := 1 to 3 do
    begin
      // Canvas.Pen.Color := OColor[4-i];
      Canvas.Pen.Color := OColor[(i+1) div 2];
      Canvas.Arc (i, i, Width-i, Height-i, i, i, i, i);
      Canvas.Ellipse (3, 3, Width-3, Height-3);
      Canvas.TextOut (x+1,y+1, Caption+' ');
    end
  // OButton nicht gedrückt
  else
    for i := 1 to 3 do
    begin
      Canvas.Pen.Color := OColor[i];
      Canvas.Arc (i, i, Width-i, Height-i, i, i, i, i);
      Canvas.Ellipse (3, 3, Width-3, Height-3);
      Canvas.TextOut (x,y, Caption+' ');
    end;
end;

procedure Register;
begin
  RegisterComponents ('Zusätzlich', [TOButton]);
end;
// Edit hatte was vergessen

Freundliche Grüsse
Mars

Neutral General 4. Mär 2007 13:10

Re: button farbig manchen??
 
Aus Delphi für Kids ne ? :mrgreen:

Gruß
Neutral General

Marcel_Mars 4. Mär 2007 13:12

Re: button farbig manchen??
 
Jep, richtig erkannt. Wieso hast du das auch mal gemacht?

Freundliche Grüsse
Mars

Kreuz Bube 4. Mär 2007 13:13

Re: button farbig manchen??
 
Du kannst auch einfach einen Eigenen Button erstellen indem du ihn von TPanel ableitest und dann halt noch mousdown bzw mousup oder nur das click ereignis zuweist

Neutral General 4. Mär 2007 15:07

Re: button farbig manchen??
 
Jo klar ;)

Mit dem Buch hab ich auch mal angefangen :)

Gruß
Neutral General


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:40 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz