AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi RichEdit mit einer Ableitung von TStringlist laufen lassen
Thema durchsuchen
Ansicht
Themen-Optionen

RichEdit mit einer Ableitung von TStringlist laufen lassen

Ein Thema von r29d43 · begonnen am 8. Mär 2009 · letzter Beitrag vom 8. Mär 2009
Antwort Antwort
r29d43

Registriert seit: 18. Jan 2007
289 Beiträge
 
Delphi 10.4 Sydney
 
#1

RichEdit mit einer Ableitung von TStringlist laufen lassen

  Alt 8. Mär 2009, 16:05
Hallo,

angenommen ich habe TStringlist abgeleitet und möchte nun eine RichEdit-Komponente mit diesem abgeleiteten TStringlist-Objekt laufen lassen. Dann habe ich das natürlich vorab auch noch dem RichEdit mitzuteilen. Nur wie? Reicht da eine einfache Zuweisung ala

RichEdit1.Lines := MyOwnLines; hierfür aus? Denn irgendwie habe ich das Gefühl, dass die von mir überschriebenen Methode gar nicht besucht wird. Habe dort einen Breakpoint gesetzt (und ein Beep), aber der Debugger stoppt da nicht (Beep ist auch nicht zu hören).


Hier event. nochmal die Ableitungsformalismen:

Delphi-Quellcode:
type
  TOStrings = class(TStringList)
  public
    procedure LoadFromStream(Stream: TStream); override;
  end;



procedure TOStrings.LoadFromStream(Stream: TStream);
var
  Size: Integer;
  S: string;
begin windows.beep(1000,30);
  BeginUpdate;
  try
    Size := Stream.Size - Stream.Position;
    SetString(S, nil, Size);
    Stream.Read(Pointer(S)^, Size);
    SetTextStr(S);
  finally
    EndUpdate;
  end;
end;
Den Code für die LoadFromStream-Methode habe ich hierfür aus der Classes-Unit herauskopiert.

Thx schonmal im Voraus.
  Mit Zitat antworten Zitat
r29d43

Registriert seit: 18. Jan 2007
289 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: RichEdit mit einer Ableitung von TStringlist laufen lass

  Alt 8. Mär 2009, 17:32
Eventuell indem ich auch gleich noch das RichEdit mit ableiten muss? Bzw. am Besten gleich auch noch das TCustomRichEdit mit!? Denn in dessen Constructor wird das TString-Objekt ja erzeugt:

Delphi-Quellcode:
FRichEditStrings := TRichEditStrings.Create;

mit:

property Lines: TStrings read FRichEditStrings write SetRichEditStrings;
Ergo, override ich dessen Constructor (mit inherited in Zeile 1), dann free ich dessen FRichEditStrings und weise diesem Identifier als nächstes dann eine eigene Ableitung von TRichEditStrings zu:

FRichEditStrings := TOwnRichEditStrings.Create;
(dat müsste zur Not auch klappen)
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: RichEdit mit einer Ableitung von TStringlist laufen lass

  Alt 8. Mär 2009, 17:45
Es geht einfacher, wenn du zur Laufzeit die Klasse der verwendeten TStrings austauschst; das ist allerdings ein Hack.
TClass(PPointer(Richedit1.Lines)^) := TOStrings. Dabei musst du allerdings beachten, dass du in der Ableitung keine neuen Felder einführen darfst.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  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 18:11 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