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 RichEdit erstellen, wenns auf die Form gezogen wird. (https://www.delphipraxis.net/25506-richedit-erstellen-wenns-auf-die-form-gezogen-wird.html)

Die Muhkuh 7. Jul 2004 18:03


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:
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;
Leider geht das so nicht. Könnt ihr mir helfen?

CalganX 7. Jul 2004 18:05

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

Christian Seehase 7. Jul 2004 18:08

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.

Die Muhkuh 7. Jul 2004 18:43

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:
FRichEdit := TRichEdit.Create(AOwner);
  FRichEdit.FreeNotification(Self);
  FRichEdit.Parent := Self;
  FRichEdit.Top := Top;
  FRichEdit.Left := Left + Width;
  FRichEdit.Width := Width;
  FRichEdit.Height := Height;
Das Problem ist nun das ein eine Zugriffverletzung bekomme:

---------------------------
Fehler
---------------------------
Zugriffsverletzung bei Adresse 007F0D18 in Modul 'vcl70.bpl'. Lesen von Adresse 00000004.
---------------------------
OK
---------------------------

Was nun?

mirage228 7. Jul 2004 18:46

Re: RichEdit erstellen, wenns auf die Form gezogen wird.
 
Woher hast du denn das FreeNotification :shock: ?

mfG
mirage228

Die Muhkuh 7. Jul 2004 18:48

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

mirage228 7. Jul 2004 18:51

Re: RichEdit erstellen, wenns auf die Form gezogen wird.
 
Zitat:

Zitat von Spider
:oops:

Chris (Chak), sagte ich solle mal das Beispiel von den LabeledEdit angucken. dort war das so drinne

Achso, Ja, Ok. Da steht es drin.

mfG
mirage228

CalganX 7. Jul 2004 19:04

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

Die Muhkuh 7. Jul 2004 19:07

Re: RichEdit erstellen, wenns auf die Form gezogen wird.
 
@Chak irgendwie kapier ich nicht was du mir sagen willst.

CalganX 7. Jul 2004 19:12

Re: RichEdit erstellen, wenns auf die Form gezogen wird.
 
Hi,
du schreibst:
Delphi-Quellcode:
FRichEdit.Parent := Self;
Und das KANN nur einen Fehler verursachen. ;)

Mach daraus mal:
Delphi-Quellcode:
FRichEdit.Parent := Self.Parent;
So sollte es eigentlich funktionieren. :gruebel:

Chris

Die Muhkuh 7. Jul 2004 19:17

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

CalganX 7. Jul 2004 19:19

Re: RichEdit erstellen, wenns auf die Form gezogen wird.
 
Hi,
platziere doch einfach das RichEdit direkt über der ShellListView bzw. direkt daneben. ;)

Chris

ibp 7. Jul 2004 19:19

Re: RichEdit erstellen, wenns auf die Form gezogen wird.
 
oder...

Delphi-Quellcode:
FRichEdit.Parent := AOwner;
...

Die Muhkuh 7. Jul 2004 19:22

Re: RichEdit erstellen, wenns auf die Form gezogen wird.
 
@Chris

wie?


@ibp

geht net, hab ich auch schon probiert.

CalganX 7. Jul 2004 19:26

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

ibp 7. Jul 2004 19:28

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;

Die Muhkuh 7. Jul 2004 19:33

Re: RichEdit erstellen, wenns auf die Form gezogen wird.
 
Delphi-Quellcode:
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;
So sieht jetzt der Code aus. Geht trotzdem nit.

ibp 7. Jul 2004 19:36

Re: RichEdit erstellen, wenns auf die Form gezogen wird.
 
poste doch mal alles

Die Muhkuh 7. Jul 2004 19:39

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.

ibp 7. Jul 2004 20:09

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;

p0w3r5tr34m3r 7. Jul 2004 20:37

Re: RichEdit erstellen, wenns auf die Form gezogen wird.
 
Delphi-Quellcode:
FRichEdit1.Parent := Form1;
das funktioniert 100%ig


MfG Powerstreamer

Ratte 8. Jul 2004 10:20

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

Die Muhkuh 8. Jul 2004 13:25

Re: RichEdit erstellen, wenns auf die Form gezogen wird.
 
@ibp

und wo ist das richedit?


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