Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi PageControl --> JvTabBar (https://www.delphipraxis.net/59611-pagecontrol-jvtabbar.html)

Nils_13 25. Dez 2005 20:06


PageControl --> JvTabBar
 
Hi,

im folgenden Code seht ihr meine Methode einen TabSheet einer PageControl zu erstellen. Aber das Problem ist, dass ich den Code für die JvTabBar zum laufen bringen muss. Nur wie mach ich das ? Das Problem: wie kommt das Memo in die JvTabBar hinein ?
Delphi-Quellcode:
JvTabBar.Tabs.TabBar.AddTab(Edit.Text);
ist das erstellen, aber dann fehlt mir noch das Memo und die zeilen im Memo.

Delphi-Quellcode:
type
   TExtendedTabSheet = class(ComCtrls.TTabsheet)
   constructor Create(AOwner: TComponent);
   private
     fMemo : TMemo;
  public

  published
    property Memo : TMemo read fMemo write fMemo;
  end;

procedure TfrmMain.Blacklanguage1Click(Sender: TObject);
begin
  with Sheet do
  begin
    Sheet := TExtendedTabSheet.Create(Pages);
    PageControl := Pages;
    Caption    := Edit1.Text;
    fMemo.Font.Color := clWhite;
    fMemo.Lines.Add('class Unbenannt ');
    fMemo.Lines.Add('var x, y, z: integer');
    fMemo.Lines.Add('');
    fMemo.Lines.Add('item proc; ');
    fMemo.Lines.Add('{');
    fMemo.Lines.Add(' z := b');
    fMemo.Lines.Add('}');
    fMemo.Lines.Add('');
    fMemo.Lines.Add('{');
    fMemo.Lines.Add(' x := a;');
    fMemo.Lines.Add(' y := a;');
    fMemo.Lines.Add(' Writeln (x); readln (y)');
    fMemo.Lines.Add('}');
    Show;
  end;
end;

procedure TfrmMain.Sheet_Create;
var TabSheet : TTabSheet;
begin
TabSheet := TTabSheet.Create(Self);
  with TabSheet do
  begin
    Align := alCLient;
    Parent := TabSheet;
  end;
TabSheet.PageControl := Pages;
end;

constructor TExtendedTabSheet.Create(AOwner: TComponent);
begin
  inherited;
  fMemo := TMemo.Create(self);
  with fMemo do
  begin
    Parent := TWinControl(self);
    Align := alClient;
  end;
  with fMemo do
    fMemo.Align := alClient;
    fMemo.Color := clBlack;
    fMemo.Show;
end;
Falls es sehr einfach ist: Ich habe grade höllische Kopfschmerzen und will mir jetzt nicht großartig den Kopf zerschmettern, aber mir würde das ganze so oder so Schwer fallen, die kopfschmerztablette muss erst noch wirken :mrgreen:

jim_raynor 25. Dez 2005 20:33

Re: PageControl --> JvTabBar
 
Zitat:

Zitat von Nils_13
Delphi-Quellcode:
JvTabBar.Tabs.TabBar.AddTab(Edit.Text);

Es reicht wenn du schreibst
Delphi-Quellcode:
JvTabBar.AddTab(Edit.Text)
Tabs.Tabbar zeigt wieder auf die JvTabBar ;)

zweitens, gibts bei den Tabs eine Data Eigenschaft bei der du ein Objekt zuweisen kannst. Allerdings arbeitet es nicht wie ein Pagecontrol. Es gibt einfach nicht mehrere Seiten. Heisst du musst dich um das Sichtbar unsichtbar schalten selbst kümmern. Die JvTabBar ist ideal um mit MDI-Fenstern zu arbeiten. Habe ich gestern auch entdeckt und bei meinem Skripteditor eingebaut.

Nils_13 25. Dez 2005 20:35

Re: PageControl --> JvTabBar
 
Es gibt da aber doch JvPageList. Hilft mir die da irgendwie weiter ?

jim_raynor 25. Dez 2005 20:39

Re: PageControl --> JvTabBar
 
Zitat:

Zitat von Nils_13
Es gibt da aber doch JvPageList. Hilft mir die da irgendwie weiter ?

Keine Ahnung. Hab nicht rausbekommen, was diese Eigenschaft soll ... Wie gesagt, für MDI-Formulare ist es Ideal. Kannst einfach das MDI-Childfenster Data zuweisen und dann in OnTabSelected aktivieren.

Du kannst ja bei dir Data das Memo zuweisen und dann immer sichtbar bzw. unsichtbar machen ...

Nils_13 25. Dez 2005 20:40

Re: PageControl --> JvTabBar
 
Was mir am wichtigsten ist: Es soll genauso wie eine PageControl vom User benutzt werden können und genau so funktionieren. Geht das auf diese Art und Weise ?

jbg 25. Dez 2005 21:11

Re: PageControl --> JvTabBar
 
Lege eine TJvPageList auf das Formular und trage diese in the JvTabBar.PageList Eigenschaft ein. Danach musst du genau so viele JvPageList-Seiten erstellen wie du TabBar-Items hast. Ansonsten bekommst du lauter "Index überschreitet das Maximum" Fehler.
Das die beiden Komponenten TJvTabBar und TJvPageList nicht näher zusammen arbeiten liegt daran, dass die TJvTabBar Komponente so designed wurde dass sie unter VCL, VisualCLX, VCL.NET und WinForms (dazu braucht man eine Test-Bibliothek vom JediDotNet Project) funktioniert.
In der neuesten Version (aus dem CVS) gibt es jetzt für die TJvTabBarItem eine "AutoDeleteData: TObjectList" Eigenschaft und TJvCustomPage (für TJvPageList) besitzt eine Data-Eigenschaft.


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