Autor Beitrag
Martello
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 131

WIN 2000
TP, C, Delphi 1.0, Turbo Delphi 2006, Delphi 7
BeitragVerfasst: So 22.03.09 23:51 
Hallo,

ich unternehme gerade erste Versuche in Windows-Graphik:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TForm1.FormPaint(Sender: TObject);
begin
with Canvas do
Polyline([Point(00), Point(500), Point(7550), Point(2550), Point(00)]);
end;


Der Code stammt aus der Turbo 2006 Hilfe und erzeugt die Fehlermeldung im Titel.
Unter TForm Elemente findet man tatsächlich kein 'FormPaint'.
Wo liegt also hier der Fehler?
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: So 22.03.09 23:53 
Moin!

Mach mal im Objektinspektor einen Doppelklick auf dem Ereignis OnPaint des Formulars. :idea: ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Martello Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 131

WIN 2000
TP, C, Delphi 1.0, Turbo Delphi 2006, Delphi 7
BeitragVerfasst: Mo 23.03.09 00:01 
user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
Moin!
Mach mal im Objektinspektor einen Doppelklick auf dem Ereignis OnPaint des Formulars. :idea: ;)


Dann öffnet sich rechts daneben ein leeres Listenfeld...
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mo 23.03.09 00:04 
Moin!

user profile iconMartello hat folgendes geschrieben Zum zitierten Posting springen:
Dann öffnet sich rechts daneben ein leeres Listenfeld...
Wo auch immer du da hinklickst, es ist nicht der ObjektInspektor und das entsprechende Ereignis... :gruebel: Zeig mal einen Screenshot. :nixweiss:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Martello Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 131

WIN 2000
TP, C, Delphi 1.0, Turbo Delphi 2006, Delphi 7
BeitragVerfasst: Mo 23.03.09 00:12 
user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
Moin!

user profile iconMartello hat folgendes geschrieben Zum zitierten Posting springen:
Dann öffnet sich rechts daneben ein leeres Listenfeld...
Wo auch immer du da hinklickst, es ist nicht der ObjektInspektor und das entsprechende Ereignis... :gruebel: Zeig mal einen Screenshot. :nixweiss:

cu
Narses


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:
27:
28:
29:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormPaint(Sender: TObject);
begin
with Canvas do
Polyline([Point(00), Point(500), Point(7550), Point(2550), Point(00)]);
end;
end.


Ich fürchte das Anfängerfehler ist gröber, als der Fehler, den Du vermutest. Aber Delphi ist mir fremder als es einfach ist...
Aber das muß auch heute nicht mehr gelernt werden. Ich muß ins Bett....
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mo 23.03.09 00:13 
Moin!

Wie die Unit aussieht, ist klar. ;) Du solltest einen Snapshot davon machen, wo du hinklickst und was dann passiert. :idea:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19336
Erhaltene Danke: 1751

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 23.03.09 00:15 
Dein Problem ist, dass du den Code einfach nur kopiert hast. Du musst das Ereignis OnPaint aber auch mit der Prozedur verknüpfen. Lösch die Zeilen (und nur die Zeilen) einmal wieder und mach dann was user profile iconNarses gesagt hat.

Dann siehst du wie das normalerweise läuft. Du landest dann nach dem Doppelklick auf OnPaint in der Unit, die dann so aussieht:
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:
27:
28:
29:
30:
unit Unit1;

interface

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

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

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormPaint(Sender: TObject);
begin
// Und hier ist dann dein Cursor
end;

end.
Martello Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 131

WIN 2000
TP, C, Delphi 1.0, Turbo Delphi 2006, Delphi 7
BeitragVerfasst: Mo 23.03.09 00:23 
user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
Moin!

Wie die Unit aussieht, ist klar. ;) Du solltest einen Snapshot davon machen, wo du hinklickst und was dann passiert. :idea:

cu
Narses


Ok. Im Anhang das Bildschirmbild....
Einloggen, um Attachments anzusehen!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19336
Erhaltene Danke: 1751

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 23.03.09 00:26 
Und genau in das Feld rechts neben OnPaint sollst du doppelt klicken.

Am besten lösch deine Zeilen vorher wieder, ich weiß nicht, ob das sonst klappt, weil der Quelltext ja so nicht richtig ist.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mo 23.03.09 00:27 
Moin!

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Und genau in das Feld rechts neben OnPaint sollst du doppelt klicken.
Jup, genau davon rede ich die ganze Zeit. ;)

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Am besten lösch deine Zeilen vorher wieder, ich weiß nicht, ob das sonst klappt, weil der Quelltext ja so nicht richtig ist.
Sollte ohne Löschen klappen, er wird ein Pickup mit der Methode machen. :)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Martello Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 131

WIN 2000
TP, C, Delphi 1.0, Turbo Delphi 2006, Delphi 7
BeitragVerfasst: Mo 23.03.09 00:29 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Und genau in das Feld rechts neben OnPaint sollst du doppelt klicken.

Am besten lösch deine Zeilen vorher wieder, ich weiß nicht, ob das sonst klappt, weil der Quelltext ja so nicht richtig ist.


Aha.
Ich habe verstanden, aber jetzt muß ich wirklich ins Bett :?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19336
Erhaltene Danke: 1751

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 23.03.09 00:35 
user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
Sollte ohne Löschen klappen, er wird ein Pickup mit der Methode machen. :)
Nein, weil Delphi nichts von der Methode weiß, denn sie ist ja oben nicht eingetragen. Entweder gibt es schon beim Doppelklick einen Fehler oder es wird einfach eine zweite identische Methode neu erstellt (was ich eher vermute).

In jedem Fall gehts etwas schief.

// EDIT:
Delphi 7 erstellt eine gleiche leere Methode daneben. Beim Speichern wird diese leere Methode zusammen mit der Deklaration oben wieder entfernt, es ist also als würde die eigene Methode nicht existieren. Kompilieren lässt es sich dann natürlich erst, wenn die zweite Methode manuell gelöscht wird.

Delphi 2006 erstellt ebenfalls eine neue leere Methode, ist dann aber etwas verwirrt und lässt beim Speichern beide Methoden stehen, die neue davon leer.