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



BeitragVerfasst: So 20.12.09 18:05 
Hallo,

wir arbeiten in der Schule mit Borland Delphi 7. Ich habe folgenden Sourcecode geschrieben der ein TForm erstellt und auf diesem dann zeichnet:

ausblenden volle Höhe MyProgram.dpr
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:
program MyProgram;

uses
  Windows, Graphics, Forms;

type
  Form = class(TForm)
  public
    procedure Paint(Sender: TObject);
  end;

procedure Form.Paint(Sender: TObject);
begin
  Canvas.Brush.Color := RGB(255255255);
  Canvas.FillRect(self.ClientRect);

  Canvas.Pen.Color := RGB(25500);
  Canvas.MoveTo(1010);
  Canvas.LineTo(100100);

  Canvas.Pen.Color := RGB(02550);
  Canvas.Brush.Style := bsClear;
  Canvas.Ellipse(1010100100);

  Canvas.Pen.Color := RGB(00255);
  Canvas.Rectangle(1010100100);
end;

var
  MyForm : Form;

begin
  Application.Initialize;
  Application.CreateForm(TForm, MyForm);

  MyForm.Width := 800;
  MyForm.Height := 600;
  MyForm.Caption := 'MyProgram';

  MyForm.OnPaint := MyForm.Paint;

  Application.Run;
end.


Mir gefällt der Form-Designer von Delphi 7 überhaupt nicht und deshalb versuche ich diesen zu meiden. Das Programm das ich geschrieben habe funktioniert soweit ganz gut. Aber da ich mich mit Delphi nicht so gut auskennte frage ich mich, ob das auch eine "saubere" Lösung ist oder ob man das an bestimmten Stellen anders machen sollte.

Viele Grüße,
Simex
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 22:44 
user profile iconsimex hat folgendes geschrieben Zum zitierten Posting springen:

ausblenden MyProgram.dpr
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
type
  Form = class(TForm)
// ...
  Canvas.Brush.Color := RGB(255255255);
// ...
  Application.Initialize;
  Application.CreateForm(TForm, MyForm);

  MyForm.Width := 800;
  MyForm.Height := 600;
  MyForm.Caption := 'MyProgram';

  MyForm.OnPaint := MyForm.Paint;

Das Programm das ich geschrieben habe funktioniert soweit ganz gut. Aber da ich mich mit Delphi nicht so gut auskennte frage ich mich, ob das auch eine "saubere" Lösung ist oder ob man das an bestimmten Stellen anders machen sollte.


1. Klassennamen in Delphi beginnen nach Konvention mit einem T:
TMyForm = class(TForm)

2. Es gibt clXxxx Namen fuer diverse Farben, z.B. clWhite, clRed, clBlue, aber im Prinzip ist das RGB() auch OK.

3. Die Formular-Initialisierung wuerde ich im Konstruktor machen, spart auch Tipparbeit.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
constructor TMyForm.Create(_Owner: TComponent);
begin
  inherited;

  Width := 800;
  Height := 600;
  Caption := 'MyProgram';

  OnPaint := Paint;
end;


4. Paint heisst schon eine Methode von TForm, deshalb besser einen eigenen Namen verwenden. Fuer Events nimmt man per Konvention OnXxxx, also in diesem Fall OnPaint.
Nachtrag: OnPaint ist natuerlich der Name des Events, nicht der Name der des Eventhandlers, da habe ich gepennt. Der Delphi Formdesigner weist dann immer ControlnameXxxx zu, also hier MyFormPaint, was nicht wirklich konsistent ist, vielleicht lieber HandleOnPaint?
Zitat:

Mir gefällt der Form-Designer von Delphi 7 überhaupt nicht und deshalb versuche ich diesen zu meiden.

Ohne Form Designer mit Delphi programmieren macht irgendwie kaum Sinn, aber wenn Du meinst ...

edit: Name fuer OnPaint Eventhandler korrigiert.


Zuletzt bearbeitet von dummzeuch am Mo 21.12.09 21:07, insgesamt 1-mal bearbeitet
simex Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: So 20.12.09 23:19 
Hey dummzeuch,

danke für die ausführliche Antwort. Ich verstehe ungefähr wie du das Alles gemeint hast. Werde mich später mal ransetzen und jeden Punkt angehen.

Zitat:
Ohne Form Designer mit Delphi programmieren macht irgendwie kaum Sinn, aber wenn Du meinst ...


Ich mag den Form-Designer nicht, da ich gerne einen Überblick über meinen Sourcecode habe. Da mache ich beim Layout keine Ausnahme. Wenn ich kleine Anwendungen habe, dann benutze ich gern mal die Drag and Drop Methode, aber bei größeren Projekten will ich keinen Computergenerierten-Code haben. Vor allem weil dabei oft redundater Code erzeugt wird. Aber auf den objektorientierten Teil will ich trotzdem nicht verzichten. Deshalb finde ich schon, dass es sinnvoll ist Delphi ohne Form-Designer zu nutzen. Aber da denkt sicher jeder anders, deshalb ist das nur eine Stilfrage.

Aufjedenfall bin ich dir sehr dankbar, dass du dir meinen Code mal unter die Lupe genommen hast und muss sagen, dass ich bissher einen guten Eindruck von diesem Forum gewonnen habe.

Viele Grüße,
Simex