AGB  ·  Datenschutz  ·  Impressum  







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

Prozedur eines anderen Type aufrufen

Ein Thema von juelin · begonnen am 11. Jul 2020 · letzter Beitrag vom 11. Jul 2020
Antwort Antwort
juelin

Registriert seit: 9. Mai 2006
Ort: Mannheim
142 Beiträge
 
Delphi XE5 Professional
 
#1

Prozedur eines anderen Type aufrufen

  Alt 11. Jul 2020, 09:13
Hallo,
ich habe ein Programm (Delphi XE10.3) /Windows10)
in dem ich eigene Typen deklariert habe.
Nun möchte ich aus der Prozedur TExtShape9.MouseDown
die Prozedur TExtShape10.Paint aufrufen.
Ich weiß aber nicht wie?????????????
Danke für die Hilfe.
Gruß Jürgen

Delphi-Quellcode:
type
  TExtShape9 = class(TShape)
  protected
    procedure Paint; override;
    procedure MouseDown(Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer); override;
  published
    property Caption;
    property Font;
  end;
  TExtShape10 = class(TShape)
  protected
    procedure Paint; override;
    procedure MouseDown(Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer); override;
  published
    property Caption;
    property Font;
  end;

var
  Shcol9: TColor;
  Shcol10: TColor;

procedure TExtShape9.Paint;
begin
  inherited Paint;
.......
  Canvas.Brush.Color:=Shcol9;
  Brush.Color:=Shcol9;
..........
end;
procedure TExtShape10.Paint;
begin
  inherited Paint;
.......
  Canvas.Brush.Color:=Shcol10;
  Brush.Color:=Shcol10;
..........
end;
procedure TExtShape9.MouseDown(Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  inherited MouseDown(Button, Shift, X, Y);
.......
  Shcol10:=clYellow;
  TExtShape10.Paint; // dieser Befehl geht nicht
end;
procedure TExtShape10.MouseDown(Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  inherited MouseDown(Button, Shift, X, Y);
.......
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
......
    with TExtShape9.Create(Form1) do
    begin
      parent:=Form1;
      Caption:='Einzahlen';
    end;
    with TExtShape10.Create(Form1) do
    begin
      parent:=Form1;
      Caption:='Auszahlen';
    end;
......
end;
Jürgen Linder

Geändert von juelin (11. Jul 2020 um 13:50 Uhr)
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.093 Beiträge
 
Delphi 12 Athens
 
#2

AW: Prozedur eines anderen Type aufrufen

  Alt 11. Jul 2020, 09:29
Du kannst nicht von der einen Klasse in der Anderen reinpfuschen, aus gutem Grund.
Ausserdem sind die Paint Funktionen keine "class procedures", die brauchen also ein Object
das Du ändern möchtest.

Entweder Du machst das extern, z.B. im OnMouseDown Event mit MyObjectInstance.Repaint,
oder Du übergibst dem TExShape9 das Object des TExShap10.

Generell weiss ich aber nicht was Du überhaupt erreichen möchtest,
ich denke das geht etwas in die falsche Richtung.
  Mit Zitat antworten Zitat
juelin

Registriert seit: 9. Mai 2006
Ort: Mannheim
142 Beiträge
 
Delphi XE5 Professional
 
#3

AW: Prozedur eines anderen Type aufrufen

  Alt 11. Jul 2020, 10:40
In der Prozedur Paint setzte ich unter anderem die Farbe des Shape.
Also in TExtShape9 ändere ich die Farbe von TExtShape10.
Nun müsste ich Paint von TExtShape10 aufrufen, damit die Farbänderung wirksam wird.
Jürgen Linder
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.093 Beiträge
 
Delphi 12 Athens
 
#4

AW: Prozedur eines anderen Type aufrufen

  Alt 11. Jul 2020, 12:25
Farbänderungen zur Farbauswahl sollte man aber eigentlich von aussen machen.
Höchstens das setzen eines Pinsels wäre in Paint Ok.
Das erst beim Malen zu Ändern macht wenig Sinn.
Man setzt den Shapes vorher eine Farbe und dann malen die sich selbst.

Die Farbe eines Objekter beim Malen eines Anderen zu ändern leuchtet mir nicht ein.
Wenn Du das möchtest dann besser einen eigenen OnColorChange Event in die Klasse einbauen,
der die Farbänerung an Andere weiterreicht.

Was genau willst Du erreichen ?
  Mit Zitat antworten Zitat
juelin

Registriert seit: 9. Mai 2006
Ort: Mannheim
142 Beiträge
 
Delphi XE5 Professional
 
#5

AW: Prozedur eines anderen Type aufrufen

  Alt 11. Jul 2020, 12:39
ich habe das Shape als Button benutzt.
Wenn man nun den Shape9 drückt, so soll sich auch die Farbe von Shape10 ändern.
Jürgen Linder
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.093 Beiträge
 
Delphi 12 Athens
 
#6

AW: Prozedur eines anderen Type aufrufen

  Alt 11. Jul 2020, 12:48
Vielleicht bist Du da an einer ganz falschen Stelle.
Schau Dir mal Events und Actions an,
wie hier in dem Video von generic schön erklärt.
https://www.delphipraxis.net/204809-...ml#post1469315

Bin gerade nicht am PC, such mal nach den Begriffen zusammen mit Delphi.
Da müsste es genug Info geben.
  Mit Zitat antworten Zitat
juelin

Registriert seit: 9. Mai 2006
Ort: Mannheim
142 Beiträge
 
Delphi XE5 Professional
 
#7

AW: Prozedur eines anderen Type aufrufen

  Alt 11. Jul 2020, 20:47
OK
ich habe es gefunden.

Anstatt: TExtShape10.Paint;
die Befehle: Form1.Repaint; Form1.Refresh;

Gruß
Jürgen
Jürgen Linder
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 21:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz