Müste dann so aussehen.Code:Case color_dreieck_zahler of
2 : ANWEISUNG;
3 : ANWEISUNG;
...
16 : begin
ANWEISUNG;
ANWEISUNG2;
end;
end;
Druckbare Version
Müste dann so aussehen.Code:Case color_dreieck_zahler of
2 : ANWEISUNG;
3 : ANWEISUNG;
...
16 : begin
ANWEISUNG;
ANWEISUNG2;
end;
end;
Geht nicht.Code:Case color_dreieck_zaehler of
16 : begin
color_dreieck_zaehler := 1;
canvas.Canvas.Brush.Color := clBlack;
end;
end;
Was heisst denn "geht nicht" genau? Fehlermeldung?
Der Code ist zwar alles andere als schön, aber syntaktisch korrekt.
Ah, jetzt sehe ich warum ihr das nicht versteht :D
Also:
Code für den Button:
:'(Code:procedure TForm1.color_dreieck_timerTimer(Sender: TObject);
begin
color_dreieck_zaehler := color_dreieck_zaehler+1;
if color_dreieck_zaehler = 2 then canvas.Canvas.Brush.Color := clWhite;
if color_dreieck_zaehler = 3 then canvas.Canvas.Brush.Color := clGray;
if color_dreieck_zaehler = 4 then canvas.Canvas.Brush.Color := clYellow;
if color_dreieck_zaehler = 5 then canvas.Canvas.Brush.Color := clOlive;
if color_dreieck_zaehler = 6 then canvas.Canvas.Brush.Color := clGreen;
if color_dreieck_zaehler = 7 then canvas.Canvas.Brush.Color := clLime;
if color_dreieck_zaehler = 8 then canvas.Canvas.Brush.Color := clAqua;
if color_dreieck_zaehler = 9 then canvas.Canvas.Brush.Color := clTeal;
if color_dreieck_zaehler = 10 then canvas.Canvas.Brush.Color := clBlue;
if color_dreieck_zaehler = 11 then canvas.Canvas.Brush.Color := clNavy;
if color_dreieck_zaehler = 12 then canvas.Canvas.Brush.Color := clPurple;
if color_dreieck_zaehler = 13 then canvas.Canvas.Brush.Color := clFuchsia;
if color_dreieck_zaehler = 14 then canvas.Canvas.Brush.Color := clMaroon;
if color_dreieck_zaehler = 15 then canvas.Canvas.Brush.Color := clRed;
//if color_dreieck_zaehler = 16 then canvas.Canvas.Brush.Color := clBlack;
Case color_dreieck_zaehler of
16 : begin
color_dreieck_zaehler := 1;
canvas.Canvas.Brush.Color := clBlack;
end;
canvas.Canvas.FloodFill(60,260,clRed,fsBorder);
// zu obiger Zeile kommt folgender Error:
// Constant expression expected
color_dreieck_timer.Enabled := false;
end;
end.
//Hier ist das Ende des Codes, jedoch folgender Fehler zu dem end.:
//';' expected but '.' found
//
//Danach kommt dieser Fehler:
//Declaration expected but EOF found
H3LP!
Programm lässt sich nicht ausführen.
Der sagt ; expected, weil das begin vom Case noch nicht geschlossen wurde, ergo zwischen end; und end. ein end; einfügen und es wird sich compilieren lassen.
Ja, dann kommt aber noch der Fehler:
Constant expression expected
zu der Zeile:
canvas.Canvas.FloodFill(60,260,clRed,fsBorder);
Kennt ihr 'ne Lösung?
nur ma ne frage: mit welchem buch lernst du delphi ?
Versuch mal das:
Durch das hier:Code://if color_dreieck_zaehler = 16 then canvas.Canvas.Brush.Color := clBlack;
Case color_dreieck_zaehler of
16 : begin
color_dreieck_zaehler := 1;
canvas.Canvas.Brush.Color := clBlack;
end;
canvas.Canvas.FloodFill(60,260,clRed,fsBorder);
oder durchCode:if color_dreieck_zaehler = 16 then begin
canvas.Canvas.Brush.Color := clBlack;
color_dreieck_zaehler := 1;
canvas.Canvas.Brush.Color := clBlack;
canvas.Canvas.FloodFill(60,260,clRed,fsBorder);
end;
zu ersetzen.Code:if color_dreieck_zaehler = 16 then begin
Canvas.Brush.Color := clBlack;
color_dreieck_zaehler := 1;
Canvas.Brush.Color := clBlack;
Canvas.FloodFill(60,260,clRed,fsBorder);
end;
Ansonsten lad mal das komplette projekt hoch...
Bei Methode 1 lässt sich die Farbe überhaupt nicht mehr ändern und bei Methode 2 fehlt das kleine canvas (Name des Bildes) und es wird Undeclared Identifier bei Brush/FloodFill ausgegeben!
Hier mal der ganze Sourcecode:
Einziger Error hier ist halt "Constant expression expected in der mit ** vormarkierten Zeile!Code:unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
quadrat: TButton;
canvas: TImage;
kreis: TButton;
dreieck: TButton;
ende: TButton;
ext_kreis: TButton;
ext_dreieck: TButton;
ext_quadrat: TButton;
ch_color_dreieck: TButton;
ch_color_kreis: TButton;
ch_color_quadrat: TButton;
color_dreieck_timer: TTimer;
color_kreis_timer: TTimer;
color_quadrat_timer: TTimer;
procedure quadratClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure kreisClick(Sender: TObject);
procedure dreieckClick(Sender: TObject);
procedure endeClick(Sender: TObject);
procedure ext_dreieckClick(Sender: TObject);
procedure ext_kreisClick(Sender: TObject);
procedure ext_quadratClick(Sender: TObject);
procedure ch_color_dreieckClick(Sender: TObject);
procedure color_dreieck_timerTimer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
color_dreieck_zaehler:integer;
color_kreis_zaehler:integer;
color_quadrat_zaehler:integer;
implementation
{$R *.dfm}
procedure TForm1.quadratClick(Sender: TObject);
begin
canvas.Canvas.Brush.Style := bsClear;
canvas.Canvas.Pen.Color := clRed;
canvas.Canvas.Pen.Width := 1;
canvas.Canvas.Rectangle(10,10,110,110);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
color_quadrat_zaehler := 1;
color_kreis_zaehler := 1;
color_dreieck_zaehler := 1;
canvas.Canvas.Brush.Style := bsSolid;
canvas.Canvas.Brush.Color := clBlack;
canvas.Canvas.Pen.Color := clBlack;
canvas.Canvas.Rectangle(0,0,1137,633);
end;
procedure TForm1.kreisClick(Sender: TObject);
begin
canvas.Canvas.Brush.Style := bsClear;
canvas.Canvas.Pen.Color := clRed;
canvas.Canvas.Pen.Width := 1;
canvas.Canvas.Ellipse(10,10,110,110);
end;
procedure TForm1.dreieckClick(Sender: TObject);
begin
canvas.Canvas.Brush.Style := bsClear;
canvas.Canvas.Pen.Color := clRed;
canvas.Canvas.Pen.Width := 1;
canvas.Canvas.MoveTo(60,10);
canvas.Canvas.LineTo(20,85);
canvas.Canvas.LineTo(100,85);
canvas.Canvas.LineTo(60,10);
end;
procedure TForm1.endeClick(Sender: TObject);
begin
Form1.Close();
end;
procedure TForm1.ext_dreieckClick(Sender: TObject);
begin
canvas.Canvas.Brush.Style := bsClear;
canvas.Canvas.Pen.Color := clRed;
canvas.Canvas.Pen.Width := 1;
canvas.Canvas.MoveTo(60,210);
canvas.Canvas.LineTo(20,285);
canvas.Canvas.LineTo(100,285);
canvas.Canvas.LineTo(60,210);
end;
procedure TForm1.ext_kreisClick(Sender: TObject);
begin
canvas.Canvas.Brush.Style := bsClear;
canvas.Canvas.Pen.Color := clRed;
canvas.Canvas.Pen.Width := 1;
canvas.Canvas.Ellipse(10,310,110,410);
end;
procedure TForm1.ext_quadratClick(Sender: TObject);
begin
canvas.Canvas.Brush.Style := bsClear;
canvas.Canvas.Pen.Color := clRed;
canvas.Canvas.Pen.Width := 1;
canvas.Canvas.Rectangle(10,430,110,530);
end;
procedure TForm1.ch_color_dreieckClick(Sender: TObject);
begin
color_dreieck_timer.Enabled := true;
end;
procedure TForm1.color_dreieck_timerTimer(Sender: TObject);
begin
color_dreieck_zaehler := color_dreieck_zaehler+1;
if color_dreieck_zaehler = 2 then canvas.Canvas.Brush.Color := clWhite;
if color_dreieck_zaehler = 3 then canvas.Canvas.Brush.Color := clGray;
if color_dreieck_zaehler = 4 then canvas.Canvas.Brush.Color := clYellow;
if color_dreieck_zaehler = 5 then canvas.Canvas.Brush.Color := clOlive;
if color_dreieck_zaehler = 6 then canvas.Canvas.Brush.Color := clGreen;
if color_dreieck_zaehler = 7 then canvas.Canvas.Brush.Color := clLime;
if color_dreieck_zaehler = 8 then canvas.Canvas.Brush.Color := clAqua;
if color_dreieck_zaehler = 9 then canvas.Canvas.Brush.Color := clTeal;
if color_dreieck_zaehler = 10 then canvas.Canvas.Brush.Color := clBlue;
if color_dreieck_zaehler = 11 then canvas.Canvas.Brush.Color := clNavy;
if color_dreieck_zaehler = 12 then canvas.Canvas.Brush.Color := clPurple;
if color_dreieck_zaehler = 13 then canvas.Canvas.Brush.Color := clFuchsia;
if color_dreieck_zaehler = 14 then canvas.Canvas.Brush.Color := clMaroon;
if color_dreieck_zaehler = 15 then canvas.Canvas.Brush.Color := clRed;
//if color_dreieck_zaehler = 16 then canvas.Canvas.Brush.Color := clBlack;
Case color_dreieck_zaehler of
16 : begin
color_dreieck_zaehler := 1;
canvas.Canvas.Brush.Color := clBlack;
end;
** canvas.Canvas.FloodFill(60,260,clRed,fsBorder);
color_dreieck_timer.Enabled := false;
end;
end;
end.
Greetz,
h-7
Die beiden Zeilen
müssen hinter das eine end; weil das case damit vorher noch abgeschlossen werden muss.Code:canvas.Canvas.FloodFill(60,260,clRed,fsBorder);
color_dreieck_timer.Enabled := false;