Autor Beitrag
Hannoi
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Mo 08.11.10 11:37 
Hallo Leute,

mein Taschenrechner (geschrieben in Delphi) kann alle 4 Grundrechenarten. Ich würde nun sehr gerne den Button ( Operator ) einfärben wenn ich ihn verwendet habe. Also wenn ich Plus gedrückt habe soll der Plus Button z.B. rot sein. Wenn ich dann aber z.B auf Minus drücke soll der Minus Button Rot eingefärbt werden und der Plus Button wieder normal sein.

Lg Hannoi
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Mo 08.11.10 11:42 
Mit dem normalen TButton geht das nicht. Du könntest aber andere Button-Komponenten verwenden, z.B. den SpeedButton (evtl. heißt der leicht anders). Der hat iirc eine Down-Eigenschaft, die für solche Sachen gedacht ist.

_________________
We are, we were and will not be.
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: Mo 08.11.10 11:51 
user profile iconHannoi hat folgendes geschrieben Zum zitierten Posting springen:
Ich würde nun sehr gerne den Button ( Operator ) einfärben wenn ich ihn verwendet habe.
Falls Du SpeedButtons verwendest:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TMainform.SpeedButton1Click(Sender: TObject);
begin
  if SpeedButton1.Font.Color = clBlack then
    SpeedButton1.Font.Color := clRed
  else
    SpeedButton1.Font.Color := clBlack;
  ...  // weitere Aktionen
end;
Alternativ könntest Du auch mit verschiedenen Images (Glyphs) arbeiten.
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Mo 08.11.10 11:59 
und die anderen zurücksetzen, PSEUDOCODE:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
for i := ?? to ?? do
  begin
         s := TSpeedbutton(FindComponent('AktionsButton' + IntToStr(i)));
         if s <> Sender then Farbe zurücksetzen
        end;

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
Hannoi Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Mo 08.11.10 12:03 
Das ist auch alles ok so, aber ich möchte nicht die Schriftfarbe ändern! Ich möchte den Button einfärben, die schriftfarbe soll schwarz bleiben. Das graue feld darum soll eine andere Farbe kriegen.
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: Mo 08.11.10 12:16 
user profile iconHannoi hat folgendes geschrieben Zum zitierten Posting springen:
ich möchte nicht die Schriftfarbe ändern! Ich möchte den Button einfärben, die schriftfarbe soll schwarz bleiben. Das graue feld darum soll eine andere Farbe kriegen.
Daß ein TButton das nicht kann, wurde Dir bereits gesagt. Und ich hatte geschrieben, daß man bei SpeedButtons alternativ mit Images arbeiten kann.
Hannoi Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Mo 08.11.10 12:18 
Ok, aber wie genau verwende ich ein Image bzw. hat dies dann auch die Funktion immer nur wenn der Button verwendet wird die farbe zu ändern?
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Mo 08.11.10 12:27 
wenn Du TSpeedbutton verwendest und Dich reinwurstel und basteln willst hier eine kleine Vorlage (muß ausgebaut werden)

Tag beim OnClick zwischen 0 und 1 toggeln...
ausblenden volle Höhe 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:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
type
  TSpeedbutton=Class(Buttons.TSpeedbutton)
    public
    Procedure paint;override;
  End;
  TForm1 = class(TForm)
    Button1: TButton;
    SpeedButton1: TSpeedButton;
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Button1Click(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
procedure TSpeedbutton.paint;
var
  PaintRect:Trect;
  s : String;
begin
  if Tag=1 then
    begin
  PaintRect := Rect(00, Width, Height);
  Canvas.Brush.Style := bsSolid;
  Canvas.Brush.Color := clLime;
  Canvas.FillRect(PaintRect);
  s := caption;
  Inflaterect(PaintRect,-10,-10);
  canvas.TextRect(PaintRect,s,[tfCenter,tfVerticalCenter]);
    end
 else
    begin
      inherited;
    end;
end;

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
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: Mo 08.11.10 12:51 
user profile iconHannoi hat folgendes geschrieben Zum zitierten Posting springen:
Ok, aber wie genau verwende ich ein Image bzw. hat dies dann auch die Funktion immer nur wenn der Button verwendet wird die farbe zu ändern?
Wenn Du die Bildchen in eine RES-Datei gepackt hast, z. B. so:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure TMainform.SpeedButton1Click(Sender: TObject);
begin
  if BildNr =  1 then
    begin
      SpeedButton1.Glyph.LoadFromResourceName(HInstance, 'BMP2');
      BildNr := 2;
    end
  else
    begin
      SpeedButton1.Glyph.LoadFromResourceName(HInstance, 'BMP1');
      BildNr := 1;
    end;
end;
BildNr ist hier eine globale Integer-Variable.
Ich habe vorhin gesehen, daß die TLMDSpeedButtons der LMD-Tools auch ohne Bildchen ihre Farbe ändern können. Dazu muß bei diesen SpeedButtons die Eigenschaft CtlXP im Objektinspektor auf false gesetzt sein.
Die LMD-Tools (Freeware-Edition) kannst Du hier laden (falls sie nicht bei Deiner Delphi-Version dabei waren): www.lmdinnovative.co...wnload/index.php#LMD

Für diesen Beitrag haben gedankt: Hannoi
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 08.11.10 14:30 
Einloggen, um Attachments anzusehen!

Für diesen Beitrag haben gedankt: Hannoi