Autor |
Beitrag |
Hannoi
Hält's aus hier
Beiträge: 8
|
Verfasst: 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
      
Beiträge: 8548
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: 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
      
Beiträge: 632
Erhaltene Danke: 121
Win 7 32-bit
Delphi 2006/XE
|
Verfasst: Mo 08.11.10 11:51
|
|
bummi
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Mo 08.11.10 11:59
und die anderen zurücksetzen, PSEUDOCODE:
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 
Hält's aus hier
Beiträge: 8
|
Verfasst: 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
      
Beiträge: 632
Erhaltene Danke: 121
Win 7 32-bit
Delphi 2006/XE
|
Verfasst: Mo 08.11.10 12:16
Hannoi hat folgendes geschrieben : | 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 
Hält's aus hier
Beiträge: 8
|
Verfasst: 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
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: 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...
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 public end;
var Form1: TForm1;
implementation
{$R *.dfm} procedure TSpeedbutton.paint; var PaintRect:Trect; s : String; begin if Tag=1 then begin PaintRect := Rect(0, 0, 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
      
Beiträge: 632
Erhaltene Danke: 121
Win 7 32-bit
Delphi 2006/XE
|
Verfasst: Mo 08.11.10 12:51
Hannoi hat folgendes geschrieben : | 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:
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
|
Verfasst: Mo 08.11.10 14:30
Einloggen, um Attachments anzusehen!
Für diesen Beitrag haben gedankt: Hannoi
|
|