![]() |
Delphi-Version: 5
Prozedur von Unit2 auf Unit1 ausführen?
Hey,
Ich möchte eine Prozedur die in Unit2 geschrieben ist auf die Paintbox anwenden welche sich in Unit1 befindet. Im Internet stand:
Delphi-Quellcode:
Geht aber trotzdem nicht. Hat jemand eine Idee?
Unit Unit1
Uses Unit2; |
AW: Prozedur von Unit2 auf Unit1 ausführen?
Wie genau definiert sich denn "geht nicht"?
|
AW: Prozedur von Unit2 auf Unit1 ausführen?
Er kennt die Paintbox nicht
|
AW: Prozedur von Unit2 auf Unit1 ausführen?
Ohne Quellcode = Stochern im Nebel
|
AW: Prozedur von Unit2 auf Unit1 ausführen?
Dann solltest du die Paintbox als Parameter beim Methodenaufruf übergeben...
|
AW: Prozedur von Unit2 auf Unit1 ausführen?
Unit2
Delphi-Quellcode:
Unit1
unit UnitFormen;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, Unit1; type TPaint = class //Mutterklasse TPaint private FFarbe : TColor; FStiftbreite : integer; procedure SetStiftbreite(const Value: integer); procedure SetFarbe(const Value: TColor); public procedure Rechteck; property Farbe : TColor read FFarbe write SetFarbe; end; TZeichnen = class(TPaint) //Zeichnenklasse für Koordinaten private // Fx1,Fy1,Fx2,Fy2 : integer; end; TVieleck = class(TZeichnen) //Klasse für Vieleck private constructor Create (x1,y1,x2,y2 : integer); end; implementation procedure TPaint.SetFarbe(const Value: TColor); begin if FFarbe <> Value then //Farbe ändern begin FFarbe := Value; //Invalidate; end; end; procedure TPaint.SetStiftbreite(const Value: integer); begin if FStiftbreite <> Value then begin FStiftbreite := Value; //Invalidate; end; end; procedure RechteckOnCreate(Sender: TVieleck); var MousePos : TCursor; x2,y2 : integer; begin X2 :=200; Y2 :=200; Paintbox1.Canvas.Rectangle(MousePos,MousePos,X2,Y2); end; end.
Delphi-Quellcode:
Ich weiß es ist purer Spaghetti Code^^
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls; type TForm1 = class(TForm) Panel1: TPanel; PaintBox1: TPaintBox; procedure PaintBox1Paint(Sender: TObject); procedure PaintBox1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure PaintBox1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); private { Private-Deklarationen } draw : boolean; public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.PaintBox1Paint(Sender: TObject); begin Paintbox1.Canvas.Brush.Color := clWhite; Paintbox1.Canvas.FillRect(Paintbox1.ClientRect); end; procedure TForm1.PaintBox1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin draw := true; Paintbox1.Canvas.MoveTo(X,Y); end; procedure TForm1.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if draw then begin Paintbox1.Canvas.LineTo(X,Y); end; end; procedure TForm1.PaintBox1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin draw := false; end; end. |
AW: Prozedur von Unit2 auf Unit1 ausführen?
Theoretisch hast du in Unit2 Zugriff über Form1.Paintbox1 - wobei das nicht zu empfehlen ist, schließlich würde die Unit2 dann nur funktionieren, wenn es irgendwo eine Form1 mit einer Paintbox1 gibt.
Ich würde empfehlen, die Paintbox als Klassenvariable deiner Helferklasse zu halten und beim Create mit zu übergeben. |
AW: Prozedur von Unit2 auf Unit1 ausführen?
Zitat:
|
AW: Prozedur von Unit2 auf Unit1 ausführen?
Ne da is nix zusammenkopiert ein kollege hat mir da etwas geholfen.
Ja mein Ausbilder möchte das ich ein Paintprogramm schreibe das eigene Klassen nutzt. Ich checks gar nicht. |
AW: Prozedur von Unit2 auf Unit1 ausführen?
Hallo...
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz