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 Kompo dyn. erstellen -> Klappt. Dyn. Kompo benutzen -> Nicht (https://www.delphipraxis.net/13423-kompo-dyn-erstellen-klappt-dyn-kompo-benutzen-nicht.html)

Nalincah 19. Dez 2003 11:36

Re: Kompo dyn. erstellen -> Klappt. Dyn. Kompo benutzen -
 
Häh? Versteh dich nicht ganz. Also mit statischen Kompos hat es einwandfrei geklappt. Wo liegt denn der Fehler?

Christian Seehase 19. Dez 2003 11:58

Re: Kompo dyn. erstellen -> Klappt. Dyn. Kompo benutzen -
 
Moin Sebastian,

da ich SynEdit im Moment nicht installiert habe, habe ich das mal ohne Highlighter und mit TMemo nachgestellt:

Delphi-Quellcode:
var anzSQL:Integer = 0;
    Sheet : array of TTabSheet;
    SQLMemo : array of TMemo;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
  SetLength(Sheet, anzSQL + 1);
  SetLength(SQLMemo, anzSQL + 1);
  // TabSheet erstellen
  Sheet[anzSQL] := TTabSheet.Create(PageControlSQL);
  Sheet[anzSQL].Parent := PageControlSQL;
  Sheet[anzSQL].PageControl := PageControlSQL;
  Sheet[anzSQL].Caption := '(Unbenannt)';
  // SQLMemo erstellen
  SQLMemo[anzSQL] := TMemo.Create(Sheet[anzSQL]);
  SQLMemo[anzSQL].Parent := Sheet[anzSQL];
  SQLMemo[anzSQL].Align := alClient;
  // SQLSyn erstellen
  // PageControl auf erstellen TabSheet stellen
  Inc(anzSQL);
  PageControlSQL.ActivePageIndex := PageControlSQL.PageCount - 1;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  if OpenDialogSQL.Execute then
  begin
    SQLMemo[PageControlSQL.ActivePageIndex].Lines.LoadFromFile(OpenDialogSQL.FileName);
    Sheet[PageControlSQL.ActivePageIndex].Caption := OpenDialogSQL.FileName;
    Sheet[PageControlSQL.ActivePageIndex].Font.Style := [];
  end; // if OpenDialogSQL.Execute then
end;
Funktioniert problemlos.

Jetzt bleiben meiner Ansicht nach nur noch zwei Möglichkeiten:
  1. Die Datei die eingelesen wird hat (inzwischen?) doch ein Problem
  2. Bei SynEdit müssen Besonderheiten beachtet werden, wenn man es dynamisch erzeugt.

Ich werd' mir noch mal SynEdit installieren und es dann noch einmal probieren.

BTW: Wird denn die Caption des TabSheets bei Dir korrekt angezeigt?

Nalincah 19. Dez 2003 12:03

Re: Kompo dyn. erstellen -> Klappt. Dyn. Kompo benutzen -
 
Ich denk mal das liegt am SynEdit, da ich die TabSheet-Caption ohne Probleme auslesen und setzen kann

Nalincah 19. Dez 2003 12:15

Re: Kompo dyn. erstellen -> Klappt. Dyn. Kompo benutzen -
 
Also mit nem normalen Memo gehts auch nicht :wall:

Christian Seehase 19. Dez 2003 12:18

Re: Kompo dyn. erstellen -> Klappt. Dyn. Kompo benutzen -
 
Moin Sebastian,

Zitat:

Zitat von General2003
Also mit nem normalen Memo gehts auch nicht :wall:

:shock:

Das was ich da oben gepostet habe benutzt ja TMemo, und damit geht's bei mir.

:gruebel:

Nalincah 19. Dez 2003 12:22

Re: Kompo dyn. erstellen -> Klappt. Dyn. Kompo benutzen -
 
Neues Projekt erstellen und dann diesen Code:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    PageControlSQL: TPageControl;
    Button1: TButton;
    Button2: TButton;
    OpenDialog1: TOpenDialog;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  anzSQL:Integer = 0;
  Sheet : array of TTabSheet;
  SQLMemo : array of TMemo;


implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  SetLength(Sheet, anzSQL + 1);
  SetLength(SQLMemo, anzSQL + 1);
  // TabSheet erstellen
  Sheet[anzSQL] := TTabSheet.Create(PageControlSQL);
  Sheet[anzSQL].Parent := PageControlSQL;
  Sheet[anzSQL].PageControl := PageControlSQL;
  Sheet[anzSQL].Caption := '(Unbenannt)';
  // SQLMemo erstellen
  SQLMemo[anzSQL] := TMemo.Create(Sheet[anzSQL]);
  SQLMemo[anzSQL].Parent := Sheet[anzSQL];
  SQLMemo[anzSQL].Align := alClient;
  // PageControl auf erstellen TabSheet stellen
  Inc(anzSQL);
  PageControlSQL.ActivePageIndex := PageControlSQL.PageCount - 1;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  if OpenDialog1.Execute then
  begin
    SQLMemo[PageControlSQL.ActivePageIndex].Lines.LoadFromFile(OpenDialog1.FileName);
  end;
end;

end.
Klappt! Jetzt versteh ich nicht warum das in meinem Prog nicht läuft. Den Source hab ich davon übernommen :-(

Nalincah 19. Dez 2003 12:35

Re: Kompo dyn. erstellen -> Klappt. Dyn. Kompo benutzen -
 
FEHLER GEFUNDEN:

Ich hab ja ne Unit hochgeladen (eines Frames).
Dieser Frame wird 4 mal erstellt. Das Programm hat den Text im Memo der ERSTEN Frames geladen, und ich war die ganze Zeit im VIERTEN Frame :wall:

Gibt es globale Variablen die nur für den jeweiligen Frame verfügbaer sind??? und nicht im jeden. Das der jeden Frame komplett einzeln behandelt???

Christian Seehase 19. Dez 2003 14:56

Re: Kompo dyn. erstellen -> Klappt. Dyn. Kompo benutzen -
 
Moin Sebastian,

soviel dann zum Thema "Globale Variablen" ;-)

Füg' doch einfach (private?) Felder in das TFrameDB Objekt ein.
Dann hast Du die gewünschte Zuordnung.


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

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