Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Farbe wechseln Anwendung


Baltus - Di 22.08.06 16:37
Titel: Farbe wechseln Anwendung
Hallo,
ich muss bis Donnerstag eine Anwendung geschrieben haben die, wenn ich auf den Button klicke die Farbe in blau und bei nochmaligem klicken in rot ändert. Soviel hab ich schon geschrieben:
:arrow:

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:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
unit mFarben3;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TFarben3 = class(TForm)
    Bt_one: TButton;
    procedure Bt_oneClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Farben3: TFarben3;

implementation

{$R *.DFM}

procedure TFarben3.Bt_oneClick(Sender: TObject);

begin

if Farben3.color = clred

then {begin

Farben3.color := clblue;

Bt_one.caption := 'Erröten!';

Farben3.caption := 'Ich mache jetzt BLAU!';

end}


else {begin

Farben3.color := clred;

Bt_one.caption := 'Ich will BLAU machen!';

Farben3.caption := 'Ich schäme mich...';

end}
;

end;

end.


Soweit so gut aber wenn ich jetzt auf den Button klicke ändert das Fenster seine Farbe nicht wie vorgesehen.
Ich glaub der Fehler liegt in den {}, kann ja sein dass welche fehlen oder so. :?:
Danke schonmal im vorraus, für euere Hilfe. :D


Moderiert von user profile iconChristian S.: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Do 24.08.2006 um 18:42


Danniolo - Di 22.08.06 16:40

Erstma :welcome: herzlich willkommen im DF!

Bist wohl noch an cpp gewöhnt, was ;)

In Delphi müsste es so aussehen:


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:
unit mFarben3;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TFarben3 = class(TForm)
    Bt_one: TButton;
    procedure Bt_oneClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Farben3: TFarben3;

implementation

{$R *.DFM}

procedure TFarben3.Bt_oneClick(Sender: TObject);

begin

if Farben3.color = clred then 
begin
  Farben3.color := clblue;
  Bt_one.caption := 'Erröten!';
  Farben3.caption := 'Ich mache jetzt BLAU!';
end else 
begin
  Farben3.color := clred;
  Bt_one.caption := 'Ich will BLAU machen!';
  Farben3.caption := 'Ich schäme mich...';
end;

end;

end.


der Berliner - Di 22.08.06 16:50

Moin...
Also ich denke mal dein Button verweigert den Dienst Weil beim Start dein Form.color=clBtnFace ist.

eine kleine Zeile behebt das Prob.


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:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
unit mFarben3;  

 
interface  

 
uses  
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,  
  StdCtrls;  

 
type  
  TFarben3 = class(TForm)  
    Bt_one: TButton;  
    procedure Bt_oneClick(Sender: TObject);  
  private  
    { Private-Deklarationen }  
  public  
    { Public-Deklarationen }  
  end;  

 
var  
  Farben3: TFarben3;  

 
implementation  

 
{$R *.DFM}  

 
procedure TFarben3.Bt_oneClick(Sender: TObject);  
begin  

If Farben3.Color=clBtnFace then Farben3.Color:=clred; 

if Farben3.color = clred then   
begin  
  Farben3.color := clblue;  
  Bt_one.caption := 'Erröten!';  
  Farben3.caption := 'Ich mache jetzt BLAU!';  
end else   
begin  
  Farben3.color := clred;  
  Bt_one.caption := 'Ich will BLAU machen!';  
  Farben3.caption := 'Ich schäme mich...';  
end;  

 
end;  

 
end.

gruß


Baltus - Di 22.08.06 17:08

Ja super!!! :dance2:
War wirklich mein überhaupt zweites Projekt. :nixweiss:
DANKE, jetzt gehts :party:


FiFtY - Do 24.08.06 16:28

ich bräuchte jetzt das ganze mit vier farben.

rot blau gelb und grün

danke für die hilfe im vorraus


der Berliner - Do 24.08.06 16:35

wie ...wenn du auf den Button klickst isses erst rot zweiter klick blau dritter klick grün usw.
oder wie????

da kommst du doch selber drauf :mahn:
gruß


FiFtY - Do 24.08.06 16:50

nein eben nicht bin zu doof dafür^^
habs schon probiert der wechselt nur einmal die farbe und danach garnicht.
Ich hab kene ahnung wie ich das angehen muss(bin anfänger)


der Berliner - Do 24.08.06 16:54

mal so aus der hüfte geschossen...
beschäftige dich mit if then elseif.
gruß


FiFtY - Do 24.08.06 17:01

mitr if und else hab ich ja probiert aber nach einem farbenwechsel istz ende banane


jakobwenzel - Do 24.08.06 17:02

Zeig mal, wie dus probiert hast.


FiFtY - Do 24.08.06 17:09

mom bin grad auf ne idee gekommen wills mal probieren


der Berliner - Do 24.08.06 17:09

also bei mir gehts ....1 x if mit 4 x else if :lol:
gruß


FiFtY - Do 24.08.06 17:11

hast du variablen eingesetzt?


der Berliner - Do 24.08.06 17:13

ja eine... Farbe: TColor
aber nur um schreibarbeit zu sparen

ein kleiner denkanstoss

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
Farbe:=Form1.Color;
if Farbe =clbtnFace then
 begin
  Form1.Color:=Clred
 end
 else if Farbe =clred then Form1.Color:=Clblue
...
...
...


FiFtY - Do 24.08.06 17:16

ganz oben ist ja der text für die 2 farben.
muss ich das nur erweitern oder ganz ändern?


der Berliner - Do 24.08.06 17:19

haste die änderung in meinem vorherigen post gesehen?


FiFtY - Do 24.08.06 17:25

ja gerade erst^^


der Berliner - Do 24.08.06 17:34

Und haste es jetzt :?: :wink2:


FiFtY - Do 24.08.06 17:42

ja die farben schon aber ich prügel mich egrade mit der caption des form1´s und des buttons


der Berliner - Do 24.08.06 18:00

Ok..hier kommt meine abgeänderte version:

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:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Farbe:TColor;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Farbe:=Form1.Color;
 case Farbe of
  clBtnFace: begin
              Button1.Caption:='Klick mich dann werde ich blau';
              Form1.Color:=Clred;
             end;
  clred:     begin
               Button1.Caption:='Klick mich dann werde ich gelb';
               Form1.Color:=Clblue;
              end;
  clblue:    begin
              Button1.Caption:='Klick mich dann werde ich grün ';
              Form1.Color:=clyellow;
             end;
  clyellow:  begin
              Button1.Caption:='Klick mich dann werde ich rot';
              Form1.Color:=clgreen;
             end;
  clgreen:   begin
              Button1.Caption:='Klick mich dann werde ich blau';
              Form1.Color:=clred;
             end;
 end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Farbe:=Form1.Color;
Button1.Caption:='Klick mich dann werde ich rot';
end;

end.

gruß


FiFtY - Do 24.08.06 18:12

danke berliner aber was bedeutet denn dieses " CASE farbe OF"


der Berliner - Do 24.08.06 18:16

Für den Fall(Case) das Form1.Farbe(Variable) ClBtnFace ist setze Form1.Farbe:=auf clrot

die Variable Farbe ist weiter ober Deklariert..Var Farbe: TColor;

gruß


FiFtY - Do 24.08.06 18:39

das ist zu kompliziert für den info unterricht.
Ich versuchs mit dem else if


der Berliner - Do 24.08.06 18:47

Is nicht komplizierte als If Anweisungen nur übersichtlicher :!:


FiFtY - Do 24.08.06 18:52

ja aber wir haben sowas nicht gemacht verstehst du
dann komm ich damit an und der checkt natürlich dass ich das meiste nicht selbergemacht hab.
unser thema ist gerade halt das mit if when und son kram. deshlab versuch ichd as mal so

aber danke


der Berliner - Do 24.08.06 19:02

na dann...
Bei den if then else if musste mit den semikolons am ende aufpassen.
und immer schön mit begin und end arbeiten :mahn:
gruß