Autor Beitrag
Tongamann
Hält's aus hier
Beiträge: 4



BeitragVerfasst: So 20.12.09 10:43 
Ich habe ein Formular mit zwei TImage Komponenten. In einer wird eine Art Vorschau, in der anderen wird später ein größeres Bild angezeigt. In beiden möchte ich nun ein identisches Dreieck zeichnen.

Wie kann ich verhindern, dass ich die Zeichnen-Aufrufe nicht doppelt programmieren muss?

Momentan:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure zeichneDreieckInPreviewWindow();
begin
with Form1.Image1.Canvas do begin
  pen.color := ...
  ...
  lineTo(..)...
end;
end;

procedure zeichneDreieckInRealWindow();
begin
with Form1.Image2.Canvas do begin
  pen.color := ...
  ...
  lineTo(..)...
end;
end;

Ziel:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure zeichneDreieckInPreviewWindow();
with Form1.Image1.Canvas do
  zeichne();

procedure zeichneDreieckInRealWindow();
with Form1.Image2.Canvas do
  zeichne();


procedure zeichne();
...


PS: Wie kann ich den Code als "Code" wie in anderen Threads auszeichnen?
Moderiert von user profile iconNarses: Indem du eckige, statt spitzen Klammern verwendest. :idea: ;)
Moderiert von user profile iconNarses: Code- durch Delphi-Tags ersetzt
dummzeuch
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 593
Erhaltene Danke: 5


Delphi 5 ent, Delphi 6 bis Delphi XE8 pro
BeitragVerfasst: So 20.12.09 11:02 
user profile iconTongamann hat folgendes geschrieben Zum zitierten Posting springen:
Ich habe ein Formular mit zwei TImage Komponenten. In beiden möchte ich nun ein identisches Dreieck zeichnen.

Wie kann ich verhindern, dass ich die Zeichnen-Aufrufe nicht doppelt programmieren muss?


Indem Du es laesst wie es ist? (doppelte Verneinung ...)

Zitat:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure zeichneDreieckInPreviewWindow();
begin
with Form1.Image1.Canvas do begin
  pen.color := ...
  ...
  lineTo(..)...
end;
end;

procedure zeichneDreieckInRealWindow();
begin
with Form1.Image2.Canvas do begin
  pen.color := ...
  ...
  lineTo(..)...
end;
end;


Ziel:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure zeichneDreieckInPreviewWindow();
with Form1.Image1.Canvas do
  zeichne();

procedure zeichneDreieckInRealWindow();
with Form1.Image2.Canvas do
  zeichne();

procedure zeichne();
...



Zunaechst einmal verabschiede Dich bitte so schnell wie moeglich vom WITH Statement, das wird frueher oder spaeter zum Alptraum bei der Programmpflege. Die Loesung ist ganz einfach:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure Zeichne(_cnv: TCanvas);
begin
  _cnv.Pen.Color := clBlack;
  // usw.
end;

procedure zeichneDreieckInPreviewWindow();
  zeichne(Form1.Image1.Canvas);

procedure zeichneDreieckInRealWindow();
  zeichne(Form1.Image2.Canvas);


Moderiert von user profile iconNarses: Code- durch Delphi-Tags ersetzt
Tongamann Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: So 20.12.09 13:13 
Wunderbar - genau das habe ich gesucht. 1000 Dank!!!