![]() |
RichEdit erstellen, wenns auf die Form gezogen wird.
Hi,
ich hab grad angefangen die Kompo zu proggen zu der mir geraten wurde :mrgreen: Meine Kompo (Abgeleitet von TShellListView) soll, wenn sie auf die Form gezogen ein RichEdit dazuerstellen.
Delphi-Quellcode:
Leider geht das so nicht. Könnt ihr mir helfen?
constructor TThumbnail.Create(AOwner : TCustomListView);
begin inherited Create(AOwner); ViewStyle := vsList; { Erzeugen des RichEdits } FRichEdit := TRichEdit.Create(AOwner); FRichEdit.Width := 100; FRichEdit.Height := 100; FRichEdit.Top := Top; FRichEdit.Left := Left + Width; |
Re: RichEdit erstellen, wenns auf die Form gezogen wird.
Hi,
soweit ich weiß musst das inherited am Ende deiner Routine schreiben. Schau dir doch mal den SourceCode von TLabeledEdit an. Chris |
Re: RichEdit erstellen, wenns auf die Form gezogen wird.
Moin Spider,
dazu müsstest Du noch einen Parent angeben, dies dürfte aber erst in der Methode CreateWnd zugreifbar sein, und Du musst dort aufpassen (z.B. mit einem Flag), dass Du die Zuweisung auch nur einmal durchführst. CreateWnd kann öfter aufgerufen werden. |
Re: RichEdit erstellen, wenns auf die Form gezogen wird.
Moin Chris,
kannst du das noch ein bisschen erläutern bzw. mir nen kleinen Beispielcode geben? ich weiß nicht so ganz was du meint :? . @All Ich hab jetzt folgenden Code
Delphi-Quellcode:
Das Problem ist nun das ein eine Zugriffverletzung bekomme:
FRichEdit := TRichEdit.Create(AOwner);
FRichEdit.FreeNotification(Self); FRichEdit.Parent := Self; FRichEdit.Top := Top; FRichEdit.Left := Left + Width; FRichEdit.Width := Width; FRichEdit.Height := Height; --------------------------- Fehler --------------------------- Zugriffsverletzung bei Adresse 007F0D18 in Modul 'vcl70.bpl'. Lesen von Adresse 00000004. --------------------------- OK --------------------------- Was nun? |
Re: RichEdit erstellen, wenns auf die Form gezogen wird.
Woher hast du denn das FreeNotification :shock: ?
mfG mirage228 |
Re: RichEdit erstellen, wenns auf die Form gezogen wird.
:oops:
Chris (Chak), sagte ich solle mal das Beispiel von den LabeledEdit angucken. dort war das so drinne |
Re: RichEdit erstellen, wenns auf die Form gezogen wird.
Zitat:
mfG mirage228 |
Re: RichEdit erstellen, wenns auf die Form gezogen wird.
Hi,
du weißt dem Richedit, das neue Control zu. :gruebel: Sicher, dass du das willst? ;) Eher wäre wohl, den parent von der Klasse selfbst. ;) Chris |
Re: RichEdit erstellen, wenns auf die Form gezogen wird.
@Chak irgendwie kapier ich nicht was du mir sagen willst.
|
Re: RichEdit erstellen, wenns auf die Form gezogen wird.
Hi,
du schreibst:
Delphi-Quellcode:
Und das KANN nur einen Fehler verursachen. ;)
FRichEdit.Parent := Self;
Mach daraus mal:
Delphi-Quellcode:
So sollte es eigentlich funktionieren. :gruebel:
FRichEdit.Parent := Self.Parent;
Chris |
Re: RichEdit erstellen, wenns auf die Form gezogen wird.
Ja so gehts. Das Problem ist nun, dass Problem ist nun ich hab zwei Kompos auf der Form... ein ShellTreeView uns ein RichEdit :shock:. Das müsste man irgendwie verschmelzen
|
Re: RichEdit erstellen, wenns auf die Form gezogen wird.
Hi,
platziere doch einfach das RichEdit direkt über der ShellListView bzw. direkt daneben. ;) Chris |
Re: RichEdit erstellen, wenns auf die Form gezogen wird.
oder...
Delphi-Quellcode:
...
FRichEdit.Parent := AOwner;
|
Re: RichEdit erstellen, wenns auf die Form gezogen wird.
@Chris
wie? @ibp geht net, hab ich auch schon probiert. |
Re: RichEdit erstellen, wenns auf die Form gezogen wird.
Hi,
du musst halt die Position des RichEdits immer wieder verändern. Dabei solltest du auf die Veränderung der Werte des ShellListView reagieren. ;) Chris |
Re: RichEdit erstellen, wenns auf die Form gezogen wird.
und wie ist es hiermit?
Delphi-Quellcode:
constructor TThumbnail.Create(AOwner:TComponent); // <-------------------------------
begin inherited Create(AOwner); ViewStyle := vsList; { Erzeugen des RichEdits } FRichEdit := TRichEdit.Create(AOwner); FRichEdit.Parent := AOwner; FRichEdit.Width := 100; FRichEdit.Height := 100; FRichEdit.Top := Top; FRichEdit.Left := Left + Width; |
Re: RichEdit erstellen, wenns auf die Form gezogen wird.
Delphi-Quellcode:
So sieht jetzt der Code aus. Geht trotzdem nit.
constructor TThumbnail.Create(AOwner : TComponent);
begin ViewStyle := vsList; { Erzeugen des RichEdits } FRichEdit := TRichEdit.Create(AOwner); FRichEdit.FreeNotification(Self); FRichEdit.Parent := Self.Parent; FRichEdit.Width := 100; FRichEdit.Height := 100; FRichEdit.Top := Top; FRichEdit.Left := Left + Width; inherited Create(AOwner); end; |
Re: RichEdit erstellen, wenns auf die Form gezogen wird.
poste doch mal alles
|
Re: RichEdit erstellen, wenns auf die Form gezogen wird.
Wenns meinst:
Delphi-Quellcode:
unit Thumbnail;
interface uses SysUtils, Classes, Controls, ComCtrls, ShellCtrls; type TThumbnail = class(TShellListView) private { Private-Deklarationen } FRichEdit : TRichEdit; protected { Protected-Deklarationen } public { Public-Deklarationen } constructor Create(AOwner : TComponent); override; published { Published-Deklarationen } end; procedure Register; implementation procedure Register; begin RegisterComponents('Spider', [TThumbnail]); end; { TThumbnail } constructor TThumbnail.Create(AOwner : TComponent); begin ViewStyle := vsList; { Erzeugen des RichEdits } FRichEdit := TRichEdit.Create(AOwner); FRichEdit.FreeNotification(Self); FRichEdit.Parent := Self.Parent; FRichEdit.Width := 100; FRichEdit.Height := 100; FRichEdit.Top := Top; FRichEdit.Left := Left + Width; inherited Create(AOwner); end; initialization RegisterClass(TRichEdit); finalization UnregisterClass(TRichEdit); //Das braucht wenn man die Kompo dynamisch erstellt. end. |
Re: RichEdit erstellen, wenns auf die Form gezogen wird.
Liste der Anhänge anzeigen (Anzahl: 1)
also bei mir geht es, hab nun keine kompo erstellt, sonder die classe in ein form gepackt:
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, ShellCtrls; type TThumbnail = class(TShellListView) private { Private-Deklarationen } FRichEdit : TRichEdit; protected { Protected-Deklarationen } public { Public-Deklarationen } constructor Create(AOwner : TComponent); override; published { Published-Deklarationen } end; .... constructor TThumbnail.Create(AOwner : TComponent); begin inherited Create(AOwner); ViewStyle := vsList; { Erzeugen des RichEdits } FRichEdit := TRichEdit.Create(self.Parent); FRichEdit.Parent := self.Parent; FRichEdit.Width := 100; FRichEdit.Height := 100; FRichEdit.Top := Top; FRichEdit.Left := Left + Width; end; ... procedure TForm1.FormCreate(Sender: TObject); var thumb:TThumbnail; begin thumb:=TThumbnail.Create(self); thumb.Parent:=self; thumb.Show; end; |
Re: RichEdit erstellen, wenns auf die Form gezogen wird.
Delphi-Quellcode:
das funktioniert 100%ig
FRichEdit1.Parent := Form1;
MfG Powerstreamer |
Re: RichEdit erstellen, wenns auf die Form gezogen wird.
@Powerstreamer: Im Form vielleicht, aber in der Komponente passt das nicht so richtig. Woher willst du wissen dass das Form nicht völlig anders heisst?
Ratte |
Re: RichEdit erstellen, wenns auf die Form gezogen wird.
@ibp
und wo ist das richedit? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz