Autor |
Beitrag |
Gitzi15
Hält's aus hier
Beiträge: 6
|
Verfasst: Fr 27.05.05 21:10
Hallo, ich brauche einen ausdruck, womit ich, wenn ich mit der Maus klicke die dazugehörigen koordinaten einlesen kann, damit dies dann in einem paint - programm benutzen kann, um z.b. eine liene von einem klich zum anderen zu ziehen, ist wirklich dringend, bin für jede hilfe dankbar. Moderiert von Christian S.: Topic aus Programmierwerkzeuge verschoben am Fr 27.05.2005 um 22:16
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Fr 27.05.05 21:21
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| var p:tpoint; begin
getcursorpos(p);
showmessage(inttostr(p.x) + ' ' + inttostr(p.y));
end; |
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
Gitzi15 
Hält's aus hier
Beiträge: 6
|
Verfasst: Sa 28.05.05 19:38
Danke schon mal, hat mich ein wenig weiter gebracht, jedoch habe ich jetzt das problem, dass ich nicht wirklich weiß, wie ich die prozedur anwenden soll, da ich es legendlich hinbekomme, die prozedur beim klick auf einen button, auszulösen, mein ziel ist es, die koordinaten in einen speicher, (sichtbar oder nicht ist egal)zu bekommen, um dann damit eine linie zu erzeugen, währe echt super, wenn mir da noch jemand helfen könnte.
|
|
teebee
      
Beiträge: 109
D6 Prof
|
Verfasst: Sa 28.05.05 21:31
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: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94:
| unit main;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); private public Start: TPoint; Last: TPoint; Procedure ResetPoints; end;
var Form1: TForm1;
implementation
{$R *.DFM}
Procedure TForm1.ResetPoints; Begin Last.X := -1; Last.Y := -1; Start.X := -1; Start.Y := -1; End;
Procedure TForm1.Button1Click(Sender: TObject); Begin Canvas.FillRect(ClientRect); End;
Procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); Begin Start.X := X; Start.Y := Y; End;
Procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); Begin ResetPoints; End;
Procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); Begin If (Start.X>=0) Then Begin If (Last.X>=0) Then Begin Canvas.MoveTo(Start.X,Start.Y); Canvas.LineTo(Last.X,Last.Y); End; Last.X := X; Last.Y := Y; Canvas.MoveTo(Start.X,Start.Y); Canvas.LineTo(X,Y); End; End;
Procedure TForm1.FormCreate(Sender: TObject); Begin ResetPoints; Canvas.Pen.Color := clRed; Canvas.Pen.Mode := pmNotXor; Canvas.Brush.Color := clBtnFace; End;
end. | Einfach einen Button auf ein leeres Formular und die Ereignisse zuweisen.
Gruß, teebee
|
|
patrick
      
Beiträge: 1481
WIN2k, WIN XP
D6 Personal, D2005 PE
|
Verfasst: So 29.05.05 12:44
wenn du interesse hast, hier sind ein paar algemeine delphi-tutorials. damit bekommst du einiges an grundlagen mit
www.dsdt.info/tutorials/index.php?cat=1
_________________ Patrick
im zweifelsfall immer das richtige tun!!!
|
|
Gitzi15 
Hält's aus hier
Beiträge: 6
|
Verfasst: So 29.05.05 12:49
Sorry, aber das funktioniert nun überhauptnicht, ich kann das zwar ein fürgen, aber wenn ich das programm starten lasse, dann malt er gar nix. ich habe delphi 7, kann das damit zu tun haben?, wäre echt dankbar, für weiter tips.
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: So 29.05.05 16:01
teebee hat folgendes geschrieben: |
Einfach einen Button auf ein leeres Formular und die Ereignisse zuweisen. |
um den code von teebee nutzen zu können musst du noch alle ereignise zuweisen, das wären
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); |
also formular aufmachen, einen button drauftun, doppelklick auf den button (damit das onClick ereignis zugewisen wird)
danach das form1 im objektinspektor öffnen und bei ereignise jeweils bei OnCreate OnMouseDown usw einen doppelklick machen...
wenn alle ereignise zugewiesen sind, kannst du den kompletten code mit dem obigen ersetzen.
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
Gitzi15 
Hält's aus hier
Beiträge: 6
|
Verfasst: So 29.05.05 17:13
Hi super vielen dank, habe es jetzt hinbekommen zumindestens so ziemlich, jetzt habe ich nur leider das kleine problem noch, dass delphi die koordinaten falsch ließt, bei getcursorpoint, wenn mir da noch jemand helfen könnte, wäre ich rud um glücklich.
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: So 29.05.05 17:31
am einfachsten nimmst du das MouseMove event der form oder deiner zeichenfläche, da sind x und y bereits relativ zur linken oberen ecke der zeichenfläche.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var p: tpoint; begin label1.Caption := inttostr(x) + '; ' + inttostr(y); getcursorpos(p); label2.caption := inttostr(p.x) + '; ' + inttostr(p.y); label3.caption := inttostr(p.x - form1.Left) + '; ' + inttostr(p.y - form1.top); end; |
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
Gitzi15 
Hält's aus hier
Beiträge: 6
|
Verfasst: So 29.05.05 18:03
|
|
|