AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi an die profis: eine funktion für mehrere klassen verwenden?
Thema durchsuchen
Ansicht
Themen-Optionen

an die profis: eine funktion für mehrere klassen verwenden?

Ein Thema von prinz_inzide · begonnen am 11. Apr 2005 · letzter Beitrag vom 11. Apr 2005
Antwort Antwort
prinz_inzide

Registriert seit: 24. Jan 2005
64 Beiträge
 
#1

an die profis: eine funktion für mehrere klassen verwenden?

  Alt 11. Apr 2005, 20:31
hi jungs&mädels^^!

also ich möcht ne funktion schreiben, die je nach dem ob ich vorher ein memo oder ein richedit ausgewählt hab, dann dort eine zeile einfügt.. nur so zum beispiel..

also:
Delphi-Quellcode:
var xyz:tcomponent;
...
xyz:=memo1; //oder eben richedit1
tmemo(xyz).lines.add('test');
das problem ist, dass ich hier
tmemo(xyz).lines.add('test'); vorne "tmemo" angeben muss, was aber auch genausogut "trichedit" sein kann, je nach dem, was der user haben will. jetzt könnt ich einfach 2 abfragen mit if machen,also so:
Delphi-Quellcode:
if (xyz=memo1) then
tmemo(xyz).lines.add('test');
if (xyz=richedit1) then
trichedit(xyz).lines.add('test');
aber ich wills eben kürzer haben.. also ich müsst des "tmemo" in der zeile
tmemo(xyz).lines.add('test'); irgendwie variabel machen..wie geht das, hab schon einges probiert hat aber nix geklappt..

DANKE!!
  Mit Zitat antworten Zitat
tommie-lie
(Gast)

n/a Beiträge
 
#2

Re: an die profis: eine funktion für mehrere klassen verwend

  Alt 11. Apr 2005, 20:54
Man suche sich einen geeigneten gemeinsamen Vorfahren, der die gewünschten Features hat. Hier wäre das TCustomMemo, das bereits FLines als TStrings und das public property Lines bereitstellt. Man caste in den gemeinsamen Vorfahren und kanndann unabhängig vom Laufzeittyp auf die Eigenschaften des Vorfahrens zugreifen:
Delphi-Quellcode:
var xyz:tcomponent;
...
xyz:=memo1; //oder eben richedit1
TCustomMemo(xyz).Lines.Add('test');
Idealweise deklariert man schon xyz als TCustomMemo und nicht als TComponent, um sicherzustellen, daß zur Laufzeit auch wirklich ein CustomMemo drinsteckt. Wenn nicht, sollte man vorher unbedingt den Laufzeittyp abfragen:
Delphi-Quellcode:
if xyz is TCustomMemo then
  //blubb
  Mit Zitat antworten Zitat
Benutzerbild von Sanchez
Sanchez

Registriert seit: 24. Apr 2003
Ort: Neumarkt Stmk
892 Beiträge
 
Delphi XE6 Enterprise
 
#3

Re: an die profis: eine funktion für mehrere klassen verwend

  Alt 11. Apr 2005, 21:10
Oder man übergibt der Funktion gleich das TStrings-Objekt. Dann kann man auch mal eine Stringliste übergeben, falls man das mal möchte.
Daniel
Testen ist feige!
  Mit Zitat antworten Zitat
prinz_inzide

Registriert seit: 24. Jan 2005
64 Beiträge
 
#4

Re: an die profis: eine funktion für mehrere klassen verwend

  Alt 11. Apr 2005, 21:14
achso..cool danke

ist nur dumm,dass ich das mit den memos uns richedits jetzt nur als bsp gewählt hatte.
ich brauch das als twebbrowser und tmoziallabrowser.

aber ich wollt des halt im allgemeinen wissen..

trotzdem schon ma danke!
wer kann mir helfen?

danke!
  Mit Zitat antworten Zitat
tommie-lie
(Gast)

n/a Beiträge
 
#5

Re: an die profis: eine funktion für mehrere klassen verwend

  Alt 11. Apr 2005, 21:21
Zitat von prinz_inzide:
ich brauch das als twebbrowser und tmoziallabrowser.
Dann musst du einen gemeinsamen Vorfahren finden, der das kann, was du willst. Da sie aber beide Active-X-Controls sind, wirst du da wohl arge Probleme haben.
Du könntest höchstens wie schon oben angedeutet mit dem is-Operator abfragen, welche Komponente du da gerade hast und entsprechend casten. Als Variablentyp nimmst du dann einen gemeinsamen Vorfahren, auch wenn er nicht die gewünschte Funktionalität hat (du castest ja ), im Zweifelsfall ist das mindestens TObject, du solltest dir aber den "höchsten" raussuchen. Welcher das ist, steht entweder in irgendeiner Dokumentation oder im Quellcode, indem du die Vererbungshierarchie abklapperst.
  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 20:04 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