AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Prozedur von Unit2 auf Unit1 ausführen?

Ein Thema von GroZ · begonnen am 27. Aug 2015 · letzter Beitrag vom 31. Aug 2015
Antwort Antwort
Seite 1 von 2  1 2      
GroZ

Registriert seit: 6. Jul 2015
Ort: Harz
167 Beiträge
 
Delphi 7 Personal
 
#1

AW: Prozedur von Unit2 auf Unit1 ausführen?

  Alt 27. Aug 2015, 15:01
Er kennt die Paintbox nicht
Julian
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Prozedur von Unit2 auf Unit1 ausführen?

  Alt 27. Aug 2015, 15:05
Ohne Quellcode = Stochern im Nebel
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
SProske

Registriert seit: 16. Feb 2015
Ort: Halle/S.
116 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#3

AW: Prozedur von Unit2 auf Unit1 ausführen?

  Alt 27. Aug 2015, 15:06
Dann solltest du die Paintbox als Parameter beim Methodenaufruf übergeben...
Sebastian
  Mit Zitat antworten Zitat
GroZ

Registriert seit: 6. Jul 2015
Ort: Harz
167 Beiträge
 
Delphi 7 Personal
 
#4

AW: Prozedur von Unit2 auf Unit1 ausführen?

  Alt 27. Aug 2015, 15:08
Unit2
Delphi-Quellcode:
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.
Unit1
Delphi-Quellcode:
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.
Ich weiß es ist purer Spaghetti Code^^
Julian
  Mit Zitat antworten Zitat
SProske

Registriert seit: 16. Feb 2015
Ort: Halle/S.
116 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#5

AW: Prozedur von Unit2 auf Unit1 ausführen?

  Alt 27. Aug 2015, 15:15
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.
Sebastian
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Prozedur von Unit2 auf Unit1 ausführen?

  Alt 27. Aug 2015, 15:27
Ich weiß es ist purer Spaghetti Code^^
Spaghetti Code ist das nicht. Ich sehe, dass du durch zusammenkopieren von Codezeilen dich gleich mal an das große Thema Klassen inkl. Vererbung wagst. Bis auf die procedure RechteckOnCreate(Sender: TVieleck), die eigentlich einer Klassen gehören sollte, und von der man noch nicht so genau weiß wohin sie mal gehören soll, schaut das doch ganz nett aus.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
GroZ

Registriert seit: 6. Jul 2015
Ort: Harz
167 Beiträge
 
Delphi 7 Personal
 
#7

AW: Prozedur von Unit2 auf Unit1 ausführen?

  Alt 27. Aug 2015, 15:35
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.
Julian
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.471 Beiträge
 
Delphi 12 Athens
 
#8

AW: Prozedur von Unit2 auf Unit1 ausführen?

  Alt 27. Aug 2015, 16:57
Hallo...
Zitat:
Ja mein Ausbilder möchte das ich ein Paintprogramm schreibe das eigene Klassen nutzt.
Hat er dir auch erklärt was Klassen sind und wie man damit arbeitet? Mein Bauchgefühl sagt eher... Nöööö.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

AW: Prozedur von Unit2 auf Unit1 ausführen?

  Alt 27. Aug 2015, 21:30
OK. Das ist heftig, wenn du mit OOP noch gar nichts am Hut hattest. Weil hier kommt das Problem mit den Zeichenroutinen noch dazu und das ist nicht unbedingt trivial. Ich hätte als Einstieg einen Umrechner Celsius-Fahrenheit gefordert mit Klassen. Dann die Umstrukturierung Vererbung für andere Einheiten.

OK, hilft nichts. Ich gehe meinst wie folgt an so was ran:
Welche Infos braucht die Klasse?
Was soll die Klasse können? Hilfe: So bald ich keinen aussagekräftigen Klassenname finde, muss ich die Aufgaben aufteilen.
Eine Methode -> eine Aufgabe. Hilfe: Finde ich keinen aussagekräftigen Methodenbezeichern -> Aufgabe aufteilen auf mehrere Methoden.

Deine Unit 2 muss die Zeichenfläche kennen. Denn: Wohin mit meinem Gekrakel? Eine VCL Klasse (TPaintbox) übergeben wäre eine Lösung. Universeller wäre einen Canvas zu übergeben. Dann kannst du mit der Klasse auf alles Zeichnen, was ein Canvas hat.

Aber eventuell solltest du deinem Ausbilder zeigen, was du bisher hast und wie du dir denkst, dass es funktionieren soll. Dann wird er dir schon sagen, ob deine Vorstellung zielführend ist oder nicht.

Deswegen: Reden, reden, reden mit dem Ausbilder. Und du kannst auch ruhig sagen, dass du in einem Forum nachgefragt hast. Das zeigt, dass du dich damit beschäftigst.

Eine wirklich konkrete Hilfe konnte ich jetzt wohl nicht geben. Aber es ist wie mit Interpretationen im Deutsch Unterricht: Wenn du nicht schreibst, was der Lehrer erwartet, hast du verloren.

Vielleicht hilft auch ein lockeres UML Diagramm. Das könnt ihr zusammen erstellen und du programmierst es aus. Oder du erstellst ein UML Diagramm und zeigst es ihm. Dann kann er sagen, wo es schwierig wird und was besser wäre.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Chris211183

Registriert seit: 19. Sep 2013
Ort: Braunschweig
204 Beiträge
 
Delphi 6 Professional
 
#10

AW: Prozedur von Unit2 auf Unit1 ausführen?

  Alt 28. Aug 2015, 10:28
Er kennt die Paintbox nicht
wenn Du deine Klasse von TGraphicControl ableitest, sollter er die Kennen....


Welche Fehlermeldungen spuckt er denn wo aus ?
Christian
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:57 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