AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Kompo dyn. erstellen -> Klappt. Dyn. Kompo benutzen -> Nicht
Thema durchsuchen
Ansicht
Themen-Optionen

Kompo dyn. erstellen -> Klappt. Dyn. Kompo benutzen -> Nicht

Ein Thema von Nalincah · begonnen am 18. Dez 2003 · letzter Beitrag vom 19. Dez 2003
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Nalincah
Nalincah

Registriert seit: 18. Jul 2003
898 Beiträge
 
Delphi 6 Professional
 
#1

Kompo dyn. erstellen -> Klappt. Dyn. Kompo benutzen ->

  Alt 18. Dez 2003, 10:02
Mit diesem Code erstelle ich ein paar Komponenten:

Globale Variablen:

Delphi-Quellcode:
var anzSQL:Integer = 0;
    Sheet : array of TTabSheet;
    SQLMemo : array of TSynMemo;
    SQLSyn : array of TSynSQLSyn;
Komponenten erstellen:
Delphi-Quellcode:
procedure TFrameDB.ButtonSQLNeuClick(Sender: TObject);
begin
  SetLength(Sheet, anzSQL + 1);
  SetLength(SQLMemo, anzSQL + 1);
  SetLength(SQLSyn, 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] := TSynMemo.Create(Sheet[anzSQL]);
  SQLMemo[anzSQL].Parent := Sheet[anzSQL];
  SQLMemo[anzSQL].Align := alClient;
  SQLMemo[anzSQL].RightEdge := 80;
  // SQLSyn erstellen
  SQLSyn[anzSQL] := TSynSQLSyn.Create(nil);
  SQLMemo[anzSQL].Highlighter := SQLSyn[anzSQL];
  // PageControl auf erstellen TabSheet stellen
  Inc(anzSQL);
  PageControlSQL.ActivePageIndex := PageControlSQL.PageCount - 1;
end;
Das klappt auch alles. Kompos werden erzeugt ohne Fehler

Wenn ich aber das ausführe, wird nichts geladen:

Delphi-Quellcode:
procedure TFrameDB.ButtonSQLLoadClick(Sender: TObject);
begin
  if OpenDialogSQL.Execute then
  begin
    TSynMemo(SQLMemo[PageControlSQL.ActivePageIndex]).Lines.LoadFromFile(OpenDialogSQL.FileName);
    TTabSheet(Sheet[PageControlSQL.ActivePageIndex]).Caption := OpenDialogSQL.FileName;
    TTabSheet(Sheet[PageControlSQL.ActivePageIndex]).Font.Style := [];
  end; // if OpenDialogSQL.Execute then
end;
Woran kann das liegen?????
Sebastian
Ehemals bekannt als General2004
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#2

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

  Alt 18. Dez 2003, 10:34
Moin Sebastian,

ich kann Dir jetzt zwar keine Lösung sagen, aber Du kannst die Typecasts (TSynMemo(...), TTabSheet(...)) weglassen, da die entsprechenden Angaben ja schon vom entsprechenden Typ sind.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Nalincah
Nalincah

Registriert seit: 18. Jul 2003
898 Beiträge
 
Delphi 6 Professional
 
#3

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

  Alt 18. Dez 2003, 10:54
Achso. Aber wo liegt der unterschied? Bzw. wofür benutzt man TTabSheet[Sheet.....
Sebastian
Ehemals bekannt als General2004
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#4

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

  Alt 18. Dez 2003, 11:02
Moin Sebastian,

das brauchst Du, wenn der übergebene Typ oberhalb des gewünschten angesiedelt ist.
Ein, auch hier, häufig anzuwendender Fall ist die Verwendung von FindComponent. Hier ist der Rückgabetyp TComponent, und i.d.R. benötigt man Eigenschaften / Methoden eines von TComponent abgeleiteten Typs. Um diese nun ansprechen zu können, muss man einen Typecast durchführen.
Besser als TDatentyp(ObjektBezeichner) ist übrigens (Objektbezeichner as TDatenTyp) da in letzterem Falle der Compiler schon eine Typprüfung vornimmt, so dass ungültige Typcasts schon zur Compilierzeit erkannt werden können. In ersterem Falle (TDatenTyp(...)), übernimmt der Entwickler die Verantwortung dafür, dass das angegebene Objekt auch wirklich so angesprochen werden kann.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Nalincah
Nalincah

Registriert seit: 18. Jul 2003
898 Beiträge
 
Delphi 6 Professional
 
#5

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

  Alt 18. Dez 2003, 11:46
Verstanden...Aber wirklich weitergebracht hat mich das jetzt nicht
Sebastian
Ehemals bekannt als General2004
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#6

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

  Alt 18. Dez 2003, 16:40
Moin Sebastian,

also einen Fehler kann ich nicht entdecken.
Hast Du mal einen Breakpoint auf diese Zeile

TSynMemo(SQLMemo[PageControlSQL.ActivePageIndex]).Lines.LoadFromFile(OpenDialogSQL.FileName); gesetzt und überprüft, ob das Programm dort ankommt?

Andere Möglichkeit:
Hast Du mal die TabSheets durchgeklickt, ob die Datei eventuell in einem anderen Memo angezeigt wird?

noch eine:
Stehen in der Datei eventuell Binäre Nullen (z.B. wenn es sich um Unicode Dateien handelt)? Dann wird das Laden bei der ersten davon beendet.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Nalincah
Nalincah

Registriert seit: 18. Jul 2003
898 Beiträge
 
Delphi 6 Professional
 
#7

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

  Alt 18. Dez 2003, 22:11
Zitat von Christian Seehase:
Moin Sebastian,

also einen Fehler kann ich nicht entdecken.
Hast Du mal einen Breakpoint auf diese Zeile

TSynMemo(SQLMemo[PageControlSQL.ActivePageIndex]).Lines.LoadFromFile(OpenDialogSQL.FileName); gesetzt und überprüft, ob das Programm dort ankommt?

Andere Möglichkeit:
Hast Du mal die TabSheets durchgeklickt, ob die Datei eventuell in einem anderen Memo angezeigt wird?

noch eine:
Stehen in der Datei eventuell Binäre Nullen (z.B. wenn es sich um Unicode Dateien handelt)? Dann wird das Laden bei der ersten davon beendet.
Das Programm kommt zu der Zeile, der FileName ist auf gesetzt. Aber im Memo steht nichts. Auch in den anderen nicht. Bei der Datei handelt es zum um ne normale txt-Datei mit nem SQL-Statement drin. Auch andersrum hab ich das problem. Wenn ich den Inhalt aus dem Memo auslesen will, dann ist es immer leer. Komisch
Sebastian
Ehemals bekannt als General2004
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#8

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

  Alt 19. Dez 2003, 02:32
Moin Sebastian,

kannst Du mal die Datei hier als Attachement anhängen, mit der das nicht funktioniert?
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Nalincah
Nalincah

Registriert seit: 18. Jul 2003
898 Beiträge
 
Delphi 6 Professional
 
#9

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

  Alt 19. Dez 2003, 07:29
Die Unit des Frame, in der ich die Kompos erstelle und benutze
Angehängte Dateien
Dateityp: zip uframe.zip (10,4 KB, 6x aufgerufen)
Sebastian
Ehemals bekannt als General2004
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#10

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

  Alt 19. Dez 2003, 11:35
Moin Sebastian,

ich hatte es geahnt...

Die Textdatei, die nicht so will wie sie soll hatte ich gemeint
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:39 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