Delphi-PRAXiS
Seite 2 von 2     12   

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 Pagecontrolproplem (https://www.delphipraxis.net/93336-pagecontrolproplem.html)

uwewo 4. Jun 2007 19:22

Re: Pagecontrolproplem
 
Nur so als Anregung, warum versuchst Du das ganze nicht mit MDIChilds zu lösen?

Jens Schumann 4. Jun 2007 20:19

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.

Adrian112 5. Jun 2007 08:19

Re: Pagecontrolproplem
 
Danke für den Quelltext! Ich werde ihn sobald wie möglich testen.

Adrian112 5. Jun 2007 12:27

Re: Pagecontrolproplem
 
Es funktioniert!!!


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:35 Uhr.
Seite 2 von 2     12   

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