Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Eigenes TMemo (https://www.delphipraxis.net/102159-eigenes-tmemo.html)

Amateurprofi 24. Okt 2007 11:50


Eigenes TMemo
 
Ich möchte ein Memo und eine Listbox nebeneinander anzeigen.
In der Listbox will ich Daten zeigen, die auf dem Inhalt der Memo-Zeilen basieren.
Zusätzlich möchte ich, für die Listbox und das Memo unterschiedliche Schriftgrößen haben können.
Um sicherzustellen, daß die Listbox-Zeilen in der gleiche Höhe liegen, wie die der Memo-Zeilen, müssen die Zeilen des Memos die gleiche Höhe haben wie die der Listbox.
In der Listbox ist das mit ItemHeigth zu regeln.
Im Memo wird (wenn ich das richtig sehe) die Zeilenhöhe in der Prozedur AdjustHeight (von TCustomEdit) eingestellt.

Ich möchte nun so vorgehen :

Ein eigenes TCustomEdit von TCustomEdit ableiten und von diesem wiederum ein eigenes TCustomMemo ableiten, das im Prinzip identisch mit dem TCustomMemo aus StdCtrls sein soll.

Bis jetzt hab ich folgendes

Delphi-Quellcode:
unit Unit1;

interface

uses Classes, StdCtrls;

Type
   TxCustomEdit=Class(TCustomEdit)
   Private
      procedure AdjustHeight; override; // Zeile 10
   protected
   public
      constructor Create(AOwner: TComponent); override;
   end;

implementation

constructor TxCustomEdit.Create(AOwner: TComponent);
begin
   inherited
end;

PROCEDURE TxCustomEdit.AdjustHeight;
begin
   inherited;
   Heigth:=Height+3;
end;

end.
Und gleich am Anfang laufe ich "auf den Schrubber"

[Fehler] Unit1.pas(10): E2137 Methode 'AdjustHeight' nicht in Basisklasse gefunden.

Jetzt frage ich mich warum AdjustHeight nicht in der Basisklasse (TCustomEdit) gefunden wird, obwohl sie darin enthalten ist.

Was mache ich falsch ? Und : Weiß jemand eine simplere Möglichkeit, die Zeilenhöhe eines TMemo einzustellen ?

Nuclear-Ping 24. Okt 2007 11:57

Re: Eigenes TMemo
 
Ist AdjustHeight in der Basisklasse implementiert oder nur eine abstrakte Funktion? Vielleicht ist AdjustHeight im protected deklariert? Versuchs mal ohne "override", aber mit "inherited" in der Implementierung.

xZise 24. Okt 2007 12:02

Re: Eigenes TMemo
 
Naja, dein Problem ist, dass Geerbte Klassen keine privaten Deklarationen erben können :idea:

MfG
xZise

Nuclear-Ping 24. Okt 2007 12:04

Re: Eigenes TMemo
 
Galt das nicht für protected? :gruebel:

mkinzler 24. Okt 2007 12:04

Re: Eigenes TMemo
 
Dann lass das inherited weg, weil dies bewirkt das eine gleichnamige Methode der Superklasse aufgerufen wird, welche nicht existiert!

mkinzler 24. Okt 2007 12:05

Re: Eigenes TMemo
 
Zitat:

Zitat von Nuclear-Ping
Galt das nicht für protected? :gruebel:

aws für protected gilt, gilt erst recht für private!

xZise 24. Okt 2007 12:14

Re: Eigenes TMemo
 
Zitat:

Zitat von mkinzler
Zitat:

Zitat von Nuclear-Ping
Galt das nicht für protected? :gruebel:

aws für protected gilt, gilt erst recht für private!

Jup:
private: Nur Unit & Klasse
protected: private + "Kinder"

Ich habe ein bisschen im Code geguckt: Adjust wird durch UpdatHeight aufgerufen, aber das wird auch nicht so direkt aufgerufen :(


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:59 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