![]() |
Pagecontrolproplem
Hallo,
ich würde gerne für meine Textverarbeitung TexEdit ein Pagecontrol verwenden, um mehrere dokumente gleichzeitig zu öffnen. Das mit neuen Seiten erstellen klappt schon, doch wie soll ich dann ein Richedit einfügen. Und wie kann ich dafür sorgen, dass wenn man zumbeispiel die Schriftart ändert das nur für das gerade aktive Richedit gemacht wird? |
DP-Maintenance
Dieses Thema wurde von "SirThornberry" von "Sonstige Fragen zu Delphi" nach "VCL / WinForms / Controls" verschoben.
|
Re: Tabcontrolproplem
1. Der Link in Deiner Signatur ist kaputt (fehlt wohl ein ":")
2. Bei TexEdit denke ich immer an TeX, dabei erwähnst Du ausgerechnet das nicht ;) Ok, ich schweife ab. Die Lösung lautet, die einzelne TTabSheet mit den Elementen darauf dynamisch zu erstellen, also etwa:
Delphi-Quellcode:
Damit Änderungen sich nur auf das aktuelle auswirken, schaust Du pcMain.ActivePage nach, enumerierst dort alle Controls (Eigenschaften "Controls", "ControlCount"), und wenn eines der TRichEdit ist ("is TRichEdit"), dann wendest Du deine Formatierung auf dessen Inhalt an.
var tabNew: TTabSheet;
begin tabNew := TTabSheet.Create(pcMain); tabNew.Parent := pcMain; tabNew.PageControl := pcMain; // hier das TRichEdit und weitere Komponenten erzeugen end; |
Re: Pagecontrolproplem
Danke für den Tipp, und wo genau fehlt ein ':'?
|
Re: Pagecontrolproplem
Also einen Link prüfen darf doch nicht so schwer sein :P
Geh einfach mit der Maus über den Link, dann wirst Du sehen daß er als: Zitat:
|
Re: Pagecontrolproplem
Aha, hab ich ganz übesehen :oops:
|
Re: Pagecontrolproplem
Funktioniert das auch mit Pagecontrol?
|
Re: Pagecontrolproplem
pcMain oben IST ein TPageControl. Aber die Unterseiten eines TPageControls sind nun TTabSheets ;)
|
Re: Pagecontrolproplem
Oh man, bin ich blöd!!! :wall:
|
Re: Pagecontrolproplem
Ich hab jetzt den Quelltext mal getestet, und das mit den TabSheets erstellen funkt
schon mal. aber das mit der einzelveränderung funkt noch nicht.
Delphi-Quellcode:
wie könnte es anders gehen?
PageControl1.ActivePage.Controls[RichEdit1.Selattributes.Size:=StrToInt(ComboBox1.Text)];
|
Re: Pagecontrolproplem
Nur so als Anregung, warum versuchst Du das ganze nicht mit MDIChilds zu lösen?
|
Re: Pagecontrolproplem
Hallo,
hier ein kleines Beispiel
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, ExtCtrls; type TForm1 = class(TForm) PageCtrl: TPageControl; btnNew: TButton; btnDelete: TButton; edtText: TEdit; procedure btnNewClick(Sender: TObject); procedure btnDeleteClick(Sender: TObject); procedure edtTextKeyPress(Sender: TObject; var Key: Char); private { Private-Deklarationen } function NewTabSheet(pc : TPageControl; aCaption : TCaption) : TTabSheet; function DeleteTabSheet(pc : TPageControl) : Boolean; public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.DFM} { TForm1 } function TForm1.NewTabSheet(pc: TPageControl; aCaption : TCaption): TTabSheet; var Panel : TPanel; RichEdit : TRichEdit; begin Result:=TTabSheet.Create(Self); Result.Parent:=pc; Result.PageControl:=pc; Result.Caption:=aCaption; Panel:=TPanel.Create(Result); Panel.Parent:=Result; Panel.Align:=alClient; Panel.BevelInner:=bvNone; Panel.BevelOuter:=bvNone; Panel.BorderWidth:=2; RichEdit:=TRichEdit.Create(Result); RichEdit.Parent:=Panel; RichEdit.Align:=alClient; Result.Tag:=Integer(RichEdit); // Hier Zeiger auf TRichEdit merken. end; procedure TForm1.btnNewClick(Sender: TObject); begin NewTabSheet(PageCtrl,'Tab '+IntToStr(PageCtrl.PageCount)); btnDelete.Enabled:=True; end; function TForm1.DeleteTabSheet(pc: TPageControl): Boolean; var aTabSheet : TTabSheet; begin Result:=True; Try aTabSheet:=pc.ActivePage; FreeAndNil(aTabSheet); Except Result:=False; end; end; procedure TForm1.btnDeleteClick(Sender: TObject); begin If Not DeleteTabSheet(PageCtrl) then ShowMessage('Fehler'); end; procedure TForm1.edtTextKeyPress(Sender: TObject; var Key: Char); var aTabSheet : TTabSheet; aRichEdit : TRichEdit; begin aTabSheet:=PageCtrl.ActivePage; If aTabSheet<>Nil then begin aRichEdit:=TRichEdit(aTabSheet.Tag); If (aRichEdit<>Nil) and (Key=#13) then aRichEdit.Lines.Add(edtText.Text); end; end; end. |
Re: Pagecontrolproplem
Danke für den Quelltext! Ich werde ihn sobald wie möglich testen.
|
Re: Pagecontrolproplem
Es funktioniert!!!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:23 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