Autor Beitrag
hs-maniac
Hält's aus hier
Beiträge: 3



BeitragVerfasst: So 28.09.08 23:33 
Hallo Delphi-Freunde!

Habe folgendes Problem:
Derweil habe ich eine Oberfläche programmiert, die mir erlaubt per Mausklick Punkte zu setzen und deren Koordinaten werden neben der Canvas-Fläche gelistet.
Ich habe es auch schon geschafft, dass sie ALLE punkte mit JEDEM Punkt was ich setze verbindet, sprich, es wird sehr schnell sehr undurchschaubar, ist aber Sinn der Sache.

Quell-Code:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
Canvas.Pen.Color := clred;
  Canvas.Pen.Width := 1;
  Canvas.Pen.Style := psDot;

 for i := 0 to High( arPoints ) - 1 do
    begin
      for j := i+1 to High( arPoints) + 0 do
          begin
              Canvas.MoveTo(arPoints[i].X, arPoints[i].Y);
               Canvas.LineTo(arPoints[j].X, arPoints[j].Y);
          end;
   end;


Nun möchte ich aber gerne, dass sich die Punkte nicht sofort verbinden sobald ich sie setze, sondern möchte ich gerne einen Button haben, der es per Klick ermöglicht, mit einmal alle Punkte zu verbinden.
Sprich:
Verbinden der Punkte erst nach Klick des Buttons.

WIe kriege ich das hin?
Ich besitze eine unit1.pas und eine unit2.pas
der button wird nach generieren in unit1.pas bearbeitet, der code hier ist aber in unit2.pas drin.

habe versucht, das ganze einfach rüber zu schreiben, geht aber net (Anfänger-Denken).


PS: Habe echt sehr wenig Ahnung von Delphi.


Besten Dank schonmal,
hs-maniac

Moderiert von user profile iconNarses: Titel geändert: Tiepvehler entfernt
Jann1k
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 866
Erhaltene Danke: 43

Win 7
TurboDelphi, Visual Studio 2010
BeitragVerfasst: So 28.09.08 23:45 
Du musst doch nichts anderes machen, als deinen obigen Code als Button-Prozedur einzufügen, beim Mausklicken zeichnest du dann nur den einen Punkt und speicherst in ab.
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Mo 29.09.08 00:26 

_________________
PROGRAMMER: A device for converting coffee into software.
hs-maniac Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mo 29.09.08 01:09 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
procedure TForm1.Button1Click(Sender: TObject);
      private
    arPoints : array of TPoint;
var i, j : integer;

begin
Canvas.Pen.Color := clred;
  Canvas.Pen.Width := 1;
  Canvas.Pen.Style := psDot;

 for i := 0 to High( arPoints ) - 1 do
    begin
      for j := i+1 to High( arPoints) + 0 do
          begin
              Canvas.MoveTo(arPoints[i].X, arPoints[i].Y);
               Canvas.LineTo(arPoints[j].X, arPoints[j].Y);
          end;
   end;
end;


Der meckert mit "private" und "pen"...
Jann1k
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 866
Erhaltene Danke: 43

Win 7
TurboDelphi, Visual Studio 2010
BeitragVerfasst: Mo 29.09.08 10:42 
Okay, da läuft bisschen was schief.

ausblenden Delphi-Quelltext
1:
2:
private
 arPoints : array of TPoint;


Das muss weiter oben stehen (wenn du in deinen Code guckst, findest du etwas wie TForm1=class(TForm) ein bisscen unterhalb davon stet ein private, da muss das hin).


Warum er beim Pen meckert, kann ich dir nicht sagen, sollte so stimmen jdf. wenn du auf der Canvas vom Formular zeicnen willst (wäre ein TImage besser).
hs-maniac Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mo 29.09.08 14:48 
wunderbar! Aber es klappt immer noch nicht. Zwar keine Fehlermeldung, aber die Linien zeichnet er trotzdem nicht.. :(
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: Mo 29.09.08 17:00 
Tja, meine Glaskugel sagt mir.. Ne, die bleibt komplett schwarz :(

Wird denn garnichts angezeigt, oder falsch gezeichnet, oder wie? Du arbeitest jetzt mit Timer, oder? schreib mal was in den Timer rein(SchowMessage..), womit du siehst, ob er ausgelöst wird(oder setz' 'nen breakpoint, falls du dich damit auskennst).

mfG,

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)