Autor Beitrag
SteheAufDerLeitung
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 104



BeitragVerfasst: Fr 25.05.07 12:37 
Hallo! Nun mal ne wirkliche Noob-Frage..

Wenn ich Funktionen schreibe und diese zum Beispiel auf nen Button-Click verwenden möchte, wo schreibe ich dann den Funktionsinhalt hin, also wo deklariere ich meine Funktionen? Muss ich diese unbedingt in eine neue Unit schreiben und diese dann in meiner "Haupt-Unit" bei "uses" nennen? Oder kann ich die Deklaration auch unter "implementation" einfügen und anschließend auch in zb ".formcreate" ansprechen? Bin einfach nur total durcheinander.

Danke schonmal vielmals..

Warum ich nicht in ein Tutorial schaue? Hab hier drei Kochbücher vor mir und langsam den Hals voll davon ;-) vielleicht halt ich die Bücher verkehrt herum?:-D
Grüße

Sebastian
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Fr 25.05.07 12:44 
Du musst deine Funktion/Prozedur noch als Methode unter Privat der entsprechenden Unit definieren.
Beispiel:
ausblenden 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:
type
  TGrid = class(TStringGrid)
  private
    { Private declarations }
    procedure MyOnDraWCell(Sender: TObject;
                           ACol, ARow: Longint;
                           Rect: TRect;
                           State: TGridDrawState);
   ....
var 
 Grid: TGrid;

implementation

procedure TGrid.MyOnDrawCell(Sender: TObject;
                             ACol, ARow: Integer;
                             Rect: TRect;
                             State: TGridDrawState);
begin
 ....
end;

// Das kommt ins Oncreate: StringGrid1.OnDraWCell := Grid.MyOnDraWCell;
// Oder du weißt die Prozedur bereits im OI zu.

end.
SteheAufDerLeitung Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 104



BeitragVerfasst: Fr 25.05.07 13:57 
Titel: hat n bissl geholfen...
..Danke dir für deine schnelle Antwort! Aber ich glaube ich weiß noch nicht genau über das Grundlegende Bescheid..
unter "Type/private" muss ich die Funktion also mit Parameter und Rückgabewert nennen, oder? Unbedingt unter private? Wenn ja, warum nicht unter den Anderen?

Wo schreib ich dann den Inhalt der Funktion? Schon unter "implementation" oder deklarier ich die gleich unter "type/private"? Und wo implementier ich sie dann? innerhalb eines Events?

Sorry, für ne so dumme Frage, aber ich konnts in keinem der Bücher mal ordentlich für Anfänger erklärt finden..

Sebastian
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Fr 25.05.07 14:24 
Es gibt keine dummen Fragen!

Du implementierst deine Funtkion/Prozedur wie gewohnt im Implementation-Bereich.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
implementation

procedure MyOnDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
begin
 [...]
end;

Anschließend machst du aus dieser Funktion/Prozedur eine Methode deiner Klasse.
D.h. du schreibst den Funktions-/Prozedurkopf nocheinmal unter Private bzw. Public.
Wobei die Funktion/Prozedur unter Private nur innerhalb der Unit sichtbar ist.
Bei Public ist das Gegenteil der Fall. Dort kannst du die Funktion/Prozedur auch außerhalb der Unit über die Klasse ansprechen.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
type
  TKlasse = class(TStringGrid)
  private
    { Private declarations }
    procedure MyOnDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
    public
    { Public declarations }
   end;

Anschließend musst Du du im Implementation-Bereich vor deinen Funktions-/Prozedurnamen den Klassennamen - getrennt mit einem Punkt - schreiben.
Irgendwie musst du diese ja auch mit der Klasse verbinden bzw. als Methode kennzeichnen.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
implementation

procedure TKlasse.MyOnDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
begin
 [...]
end;


Nun kannst du im OnCreate oder im OI deine selbstdefinierte Funktion/Prozedur einem Ereignis zuweißen:
ausblenden Delphi-Quelltext
1:
2:
{ OnCreate }
 StrinGrid1.OnDrawCell := MyOnDrawCell;


Fertig! ;)
Müsst alles so stimmen und ich hoffe, dass du es verstanden hast. :)

grüße
SteheAufDerLeitung Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 104



BeitragVerfasst: Fr 01.06.07 09:07 
Titel: Vielen Dank!!
Das hat mir wirklich weitergeholfen! Ne super Antwort, die du da gegeben hast! Sehr verständlich und ausführlich!! :-D So wie wir Anfänger es uns wünschen ;-)