AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen FreePascal Verschiedene Controls an Procedur übergeben
Thema durchsuchen
Ansicht
Themen-Optionen

Verschiedene Controls an Procedur übergeben

Ein Thema von Guido Eisenbeis · begonnen am 27. Okt 2011 · letzter Beitrag vom 27. Okt 2011
Antwort Antwort
Seite 1 von 3  1 23      
Guido Eisenbeis

Registriert seit: 9. Apr 2006
389 Beiträge
 
Delphi 10.3 Rio
 
#1

Verschiedene Controls an Procedur übergeben

  Alt 27. Okt 2011, 05:16
Ich benutze Lazarus im {$mode delphi} für Win 32.

Es geht um eine Routine, der ein Control übergeben wird und dann einige Eigenschaften benutzt und geändert werden. Die wichtigsten Eigenschaften sind "Canvas", "(Show)Hint" und "Caption".

Der Routine sollen bei verschiedenen Aufrufen auch verschiedene Controls übergeben werden. Beispiel:

Delphi-Quellcode:
  // Prozedur-Kopf
  procedure TForm1.SetShortenedText(ACtrlWithCanvas: T-???; AText: string);


  // Aufruf-Beispiel
  SetShortenedText(Label1, 'Mein Text');
  SetShortenedText(Panel1, 'Mein Text');
Allerdings kriege ich den Typ für "ACtrlWithCanvas" nicht hin. Benutze ich TControl meckert der Compiler über "dies", nehme ich TGraphicsControl meckert er über "das". Wie kann man das lösen, so dass ich ein beliebiges Control (mit Canvas) übergeben kann, ohne die Routine mit zusätzlichen Übergabe-Parametern aufzublähen?

Guido.

Edit: Das Problem konnte nicht auf direktem Weg gelöst werden. Ein Workaround wird in diesem Thread behandelt.

Geändert von Guido Eisenbeis (28. Okt 2011 um 00:24 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Verschiedene Controls an Procedur übergeben

  Alt 27. Okt 2011, 06:05
TControl und dann per RTTI schauen ob es die Properties gibt um auf diese Zuzugreifen.
Die nötigen Funktion finden sich hierbei in der Unit Types.
Ob du auf Canvas damit kommst könnte evtl. nicht möglich sein da die RTTI nur für published-Properties den Zugriff ermöglicht.
Aber falls Lazarus auch die erweiterte RTTI schon kann könntest du schauen ob du darüber den Zugriff hin bekommst.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Verschiedene Controls an Procedur übergeben

  Alt 27. Okt 2011, 06:53
Mn kann auch schauen wo diese Eigenschafften eingeführt wurden und nimmt dieses als Basistyp für den Parameter.

Da Caption aber z.B. schon recht früh vorhanden war, allerdings protected und man demnach eigentlich nicht ran kommt,
kann man diesen Typen dennoch nehmen und macht sich das Property sichtbar, über eine eigene Zugriffsklasse oder man castet einfach in "irgendwas", wo es endlich sichtbar ist.


Die neue RTTI würde ja auf nahezu alles zugreifen können, aber die vom 2006/TDE ist noch etwas "älter".
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Verschiedene Controls an Procedur übergeben

  Alt 27. Okt 2011, 07:34
... aber die vom 2006/TDE ist noch etwas "älter".
Er nimmt für dieses Anwendungsfall Lazarus:
Zitat:
Ich benutze Lazarus im {$mode delphi} für Win 32.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von ConnorMcLeod
ConnorMcLeod

Registriert seit: 13. Okt 2010
Ort: Bayern
490 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Verschiedene Controls an Procedur übergeben

  Alt 27. Okt 2011, 07:49
Im Falle der Caption: if AControl is TWinControl then TWinControl(AControl).Perform(WM_SETTEXT, ...
Nr.1 Delphi-Tool: [F7]
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Verschiedene Controls an Procedur übergeben

  Alt 27. Okt 2011, 07:53
Ein Label hat auch eine Caption und ist garantiert kein TWinControl.
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 ConnorMcLeod
ConnorMcLeod

Registriert seit: 13. Okt 2010
Ort: Bayern
490 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Verschiedene Controls an Procedur übergeben

  Alt 27. Okt 2011, 08:01
Dann musst Du's eben im else-Zweig etwas langwieriger über RTTI behandeln.
Nr.1 Delphi-Tool: [F7]
  Mit Zitat antworten Zitat
Guido Eisenbeis

Registriert seit: 9. Apr 2006
389 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: Verschiedene Controls an Procedur übergeben

  Alt 27. Okt 2011, 08:18
Ein Label hat auch eine Caption und ist garantiert kein TWinControl.
Richtig. (Hab ich gerade hierbei erfahren müssen.)

TControl und dann per RTTI schauen ob es die Properties gibt um auf diese Zuzugreifen.
So, jetzt isses passiert: Ich gehör zum alten Eisen und bin eingerostet! Die RTTI kenne ich nicht (hab's aber gerade auf Wikipedia nachgescehen) und stehe auf dem Schlauch. Kannst du das mal anders erklären? Meinst du, ich soll nachsehen, ob das übergebene TControl die Eigenschaften Canvas, Hint, Caption, ... hat? Und dann?

Und vielleicht noch eine kleine Erklärung zu der RTTI in Umgangssprache (also für Doofe wie mich )? Wie benutzt man die? "If AControl is ..." oder so?

Guido.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Verschiedene Controls an Procedur übergeben

  Alt 27. Okt 2011, 08:22
Für die Caption findest Du hier ein Delphi-Beispiel (Unit TypInfo muss eingebunden werden). Inwiefern das mit Lazarus funktioniert weiß ich allerdings 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
Guido Eisenbeis

Registriert seit: 9. Apr 2006
389 Beiträge
 
Delphi 10.3 Rio
 
#10

AW: Verschiedene Controls an Procedur übergeben

  Alt 27. Okt 2011, 08:49
Für die Caption findest Du hier ein Delphi-Beispiel (Unit TypInfo muss eingebunden werden).
Prima, funktioniert gut. Danke für die Funktion! Ich denke, die kann ich noch öffter gebrauchen.

Inwiefern das mit Lazarus funktioniert weiß ich allerdings nicht.
Funktioniert!

Aaaaber, ... wie gesagt steh ich auf dem Schlauch, wie's weitergehen soll. Ich kann prüfen, ob die Funktionen vorhanden sind, aber wie kann ich drauf zugreifen? Und welcher Kassentyp soll an meine Routine übergeben werden? TObject?

Guido.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 07:32 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