Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Button deaktivieren


jUli@ - Do 12.12.02 15:36
Titel: Button deaktivieren
Hallo,
ich möchte buttons bei bestimmten sachen deaktivieren. Aber die bilder auf den buttons sollen drin bleiben und nicht alles in grau gefärbt werden. ich möchte dann nämlich ein anderes bild anzeigen. wie mache ich das??

danke schon mal!

LG Julia


LCS - Do 12.12.02 15:42

Hi
du musst eigentlich nur dafür sorgen, dass die Glyphs für deine Buttons zwei Bilder enthalten. Das erste für Enabled, das zweite für Disabled. Ist nur eins vorhanden, wirds von Delphi grau dargestellt, ansonsten wird einfach das zweite verwendet.

Gruss Lothar


jUli@ - Fr 13.12.02 10:45

hi!
naja,. aber wie kann ich das machen??? ist es besser wenn ich das in eine extra procedure schreibe? es soll ja später so sein .. wenn button1 ist gedrückt dann soll button 2 nicht mehr klickbar sein, ist button 3 gedrückt sollen 1 + 2 nicht klickbar sein. wenn die button "nicht klickbar" dann sollen die bilder grau werden. wenn die "klickbar" dann soll das bild farbig sein. wie schreibe ich das vom quellcode? ich weiß nämlich nicht wie ich das schreiben soll! da ich nicht weiß ich ich ein 2. bild eintragen kann! bitte hilf mir da doch nochmal!

danke :o)

LG Julia


foxy - Fr 13.12.02 11:26

sers mach doch ne abfrage ... if button 1 gedrückt dann
setze die anderen auf disabled.... das machste mit jedem button unn das schreibste in die onKlick procedure von den Buttons dann müsste es funzen unn mit den zwei bildern dann machste einfach

dann fügste einfach in die Procedure dazu

Quelltext
1:
2:
3:
4:
5:
6:
if Bitbtn1.disabled then
  begin
    bitbtn1.glyph.loadfromfile(xxx);
  end
else
  bitbtn1.glyph.loadfromfile(xxx);


so würde ich das machen :lol:


Tino - Fr 13.12.02 12:51

Noch mal zur Erklärung: Du erstellst (zum Beispiel mit Paint) eine Bitmap-Datei. Diese Graphic ist dann nicht 16x16 groß sondern 32x16. Das bedeutet das die linken Hälfte der Graphic die Graphic beinhaltet welche angezeigt wird wenn der Button Enabled ist und die rechten Hälfte muss die Graphic enthalten welche angezeigt wird wenn die Eingenschaft Enabled auf False steht.

Wenn Du nun im Programm einen Button auf Enabled = False setzt kümmert sich die Komponente selbst darum welche Graphic angezeigt wird.

Also brauchst Du eigentlich nicht, wie foxy vorgeschlagen hat die LoadFromFile Methode aufrufen!

Gruß
TINO


foxy - Fr 13.12.02 13:24

hmm ok tino :roll: war doch nur ein vorschlag 8)


jUli@ - Fr 13.12.02 15:17

hey danke werds gleich mal probieren! kann ich dann eigentlich auch die button farbe in grau ändern?also nicht nur das bild!


naja,.. aber danke schon mal!
LG Julia :D


foxy - Fr 13.12.02 15:23

wenn du den auf disabled setzt wird der ganze Button grau ... glaub ich :wink:
aber um die echte farbe zu ändern, versuch das mal wenn du ein BitBtn hast

Quelltext
1:
bitbtn1.brush.color:=cLred;                    


Delete - Fr 13.12.02 15:23

Die Button-Farbe ist doch schon grau. :shock: Im Gegenteil, man müßte sich anstregen, wenn man sie ändern wollte.


foxy - Fr 13.12.02 15:27

sag ich doch :lol: :lol:


jUli@ - Fr 13.12.02 15:53

ja die ist grau. aber das ist das windown beigegrau-irgendwas ich wollte das bild graueinfärben und dann dem button die gleiche hintergrundfarbe geben wie bei dem bild. .... naja,.. außerdem habe ich speedbuttons. irgendwie klappt das nicht.


foxy - Fr 13.12.02 15:55

hmm bei speedbuttons kann man glaub ich gaa nich die farbe ändern soweit ich weis .....