AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Parameterübergabe Sender: TObject wie?
Thema durchsuchen
Ansicht
Themen-Optionen

Parameterübergabe Sender: TObject wie?

Ein Thema von madina · begonnen am 25. Mai 2011 · letzter Beitrag vom 25. Mai 2011
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#11

AW: Parameterübergabe Sender: TObject wie?

  Alt 25. Mai 2011, 10:11
Abgesehen davon überdauert ein Canvas.Textout ein Neuzeichnen nicht.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#12

AW: Parameterübergabe Sender: TObject wie?

  Alt 25. Mai 2011, 10:15
ich habe folgenden Quellkode, wo ich aus TfrmMain den Procedure frmMain.Zeige(frmMain); aufrufe => kein Problem gibt er mir den 'Hallo' String aus im TfrmMain.

Frage: wenn ich aus Tform1 frmMain.Zeige(form1); aufrufe => zeigt er den 'Hallo' String nicht aus im form1. Warum??

Delphi-Quellcode:
Procedure TfrmMain.Zeige(Sender: TObject);
begin
  with Sender do
    begin
      Canvas.TextOut(X, Y, 'Hallo');
    end
end
Tja, da haben wir das böse WITH, denn eigentlich sieht es so aus, da TObjekt kein Canvas besitzt.
Delphi-Quellcode:
Procedure TfrmMain.Zeige(Sender: TObject);
begin
  with Sender do
    begin
      Self.Canvas.TextOut(X, Y, 'Hallo');
    end
end
Es wird also erfogreich gezeichnet, aber eben immer nur auf der Form, worin diese Zeichenmethode rumliegt.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#13

AW: Parameterübergabe Sender: TObject wie?

  Alt 25. Mai 2011, 10:18
Der Sender ist ja schon auf TForm geändert.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#14

AW: Parameterübergabe Sender: TObject wie?

  Alt 25. Mai 2011, 11:04
Man könnte versuchen, die Fehler-Ursache einzugrenzen:

Delphi-Quellcode:
Procedure TfrmMain.Zeige(Sender: TObject);
var
  AForm : TCustomForm;
begin
  if Sender is TCustomForm then
  begin
    AForm := TCustomForm(Sender);
    AForm.Canvas.TextOut(X, Y, 'Hallo');
    ShowMessage(Format('Ausgabe auf %s.%s %dx%d', [AForm.ClassName, AForm.Name, x, y]));
  end
  else
    ShowMessage(Format('Kein Ausgabe auf %s', [Sender.ClassName]));
end;
€: die Variante mit TForm als Parameter würde ein Cast unnötig machen.

Geändert von Satty67 (25. Mai 2011 um 11:06 Uhr)
  Mit Zitat antworten Zitat
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#15

AW: Parameterübergabe Sender: TObject wie?

  Alt 25. Mai 2011, 11:05
Wie DeddyH schon geschrieben hat, vermute! ich mal, dass du das einfach an der falschen Stelle ausführst.
Die Zeichnung solltest im OnPaint des Formulars durchführen.
Außerdem solltest du, falls sich der auszugebende Text ändert, nach dieser Änderung ein Form1.Invalidate aufrufen, damit ein Neuzeichnen überhaupt stattfindet.

HTH

Gruß
angos
Ansgar
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#16

AW: Parameterübergabe Sender: TObject wie?

  Alt 25. Mai 2011, 11:16
Die Zeichnung solltest im OnPaint des Formulars durchführen.
Das sowieso, deshalb dachte ich auch, sollte man die (erfolgreiche) Ausgabe resistenter visualisieren (mit ShowMessage)

Zum besseren Verständnis für den den/die TS:

Windows zeichnet den Inhalt eines Fensters bei vielen Gelegenheiten neu. Da reicht schon ein Verschieben oder Umbenennen eines darauf befindlichen Elements. Windows ruft dazu (quasi) die Methode Paint auf. Alles was nun nicht innerhalb der Methode Paint gezeichnet/geschrieben wurde, ist damit hinfällig und wird (wenn es schnell geht) scheinbar garnicht gezeichnet.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#17

AW: Parameterübergabe Sender: TObject wie?

  Alt 25. Mai 2011, 13:29
woher kommen eigentlich x und y?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 14:12 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