AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Ein Frame mit einem String mehrmals erstellen?
Thema durchsuchen
Ansicht
Themen-Optionen

Ein Frame mit einem String mehrmals erstellen?

Ein Thema von b00gie · begonnen am 4. Aug 2009 · letzter Beitrag vom 4. Aug 2009
Antwort Antwort
b00gie

Registriert seit: 5. Aug 2008
43 Beiträge
 
#1

Ein Frame mit einem String mehrmals erstellen?

  Alt 4. Aug 2009, 08:38
Hallo zusammen,

ich hab da ein kleines Problem, wo ich nicht "drüber" blicke... Also eigentlich ganz einfach.. Ich habe ein PageControl und erstelle dynamisch per Knopfdruck einen Reiter /neue Seite.
Da nun auf jeder Seite das selbe angezeigt werden soll, hab ich den Inhalt in ein Frame gepackt. Dieses Frame wird dann halt einfach nach dem erzeugen des neuen Reiters direkt miterzeugt und auf die Seite gepackt. Soweit funktioniert auch alles... Allerdings habe ich im Source vom Frage halt ein paar Variablen drin.

Gehen wir vom Beispiel String "Passwort" aus. Erstelle ich nun 10 Frames, so ist in diesem String immer das letzte Passwort drin, also wird der String jedes Mal überschrieben. Macht Sinn, aber irgendwie auch nicht, da ja der String im Frame-Source deklariert wird und das Frame 10mal geladen wird. Also müsste diese Variable auch 10mal existieren???

Wenn ich z.B. ein Edit-Feld nehme mit dem Namen "Edit1" kann ich 10 Frames erstellen und später einfach per "Frame[i].Edit1" drauf zugreifen, wie funktioniert nun sowas mit Variablen?

Ein Array kann ich nicht nutzen, weil ich nie weiß wieviele Reiter erstellen werden... mal 2.. mal 2000....




Gruß Niko
Es wird immer eine Lösung geben...
...fragt sich nur wann!!!
  Mit Zitat antworten Zitat
Mysterio08

Registriert seit: 11. Jan 2009
142 Beiträge
 
#2

Re: Ein Frame mit einem String mehrmals erstellen?

  Alt 4. Aug 2009, 08:59
Du könntest doch ein dynamischer Array nehmen und es dann immer wieder neu dimensionieren, oder habe ich da einen Teil deines Problems überlesen oder nicht verstanden?
  Mit Zitat antworten Zitat
Benutzerbild von FaTaLGuiLLoTiNe
FaTaLGuiLLoTiNe

Registriert seit: 3. Jul 2004
Ort: NRW
55 Beiträge
 
Delphi XE Enterprise
 
#3

Re: Ein Frame mit einem String mehrmals erstellen?

  Alt 4. Aug 2009, 09:08
Zitat von b00gie:
Allerdings habe ich im Source vom Frage halt ein paar Variablen drin.

Gehen wir vom Beispiel String "Passwort" aus. Erstelle ich nun 10 Frames, so ist in diesem String immer das letzte Passwort drin, also wird der String jedes Mal überschrieben. Macht Sinn, aber irgendwie auch nicht, da ja der String im Frame-Source deklariert wird und das Frame 10mal geladen wird. Also müsste diese Variable auch 10mal existieren???
Ich würde jetzt mal darauf tippen, dass du mit 'im Source vom Frame' meinst, dass du die Variablen in der Unit deklariert hast, richtig?

Also etwa so:

Delphi-Quellcode:
unit MeineUnit;

interface

uses [...]

type
  TMeinFrame = class(TFrame)
    [...]
  private
    [...]
  public
    [...]
  end;

var MeinFrame: TMeinFrame;
    Variable1: Variablentyp1; <--
    Variable2: Variablentyp2; <-- Hier hast du deine Variablen deklariert
    Variable3: Variablentyp3; <--

implementation

[...]
In diesem Fall hast du die Variablen nicht als Objektvariablen von TMeinFrame deklariert, sondern als globale Variablen. Das bedeutet, die Variablen kommen programmweit nur ein einziges Mal vor und werden jedesmal überschrieben, wenn du schreibend darauf zugreifst.

Du solltest stattdessen deine Variablen im 'private' - bzw. 'public' - Abschnitt der Klasse TMeinFrame deklarieren, je nachdem wie du die Sichtbarkeit der Variablen brauchst (da du ja von einem anderen Form darauf zugreifen willst, wäre wohl der 'public' - Abschnitt die richtige Wahl). Dann kannst du z.B. mit MeinFrame1.Variable1 auf deine Variablen zugreifen, wenn MeinFrame1 vom Typ TMeinFrame ist.
Christian
<< FaTaLGuiLLoTiNe >>
Rhinoceroses don't play games!
  Mit Zitat antworten Zitat
b00gie

Registriert seit: 5. Aug 2008
43 Beiträge
 
#4

Re: Ein Frame mit einem String mehrmals erstellen?

  Alt 4. Aug 2009, 09:18
ok danke
Dachte mir schon das es was leichtes ist. Ich hab die Variablen in den public Teil gepackt jetzt läuft's. Danke euch


Gruß Niko
Es wird immer eine Lösung geben...
...fragt sich nur wann!!!
  Mit Zitat antworten Zitat
b00gie

Registriert seit: 5. Aug 2008
43 Beiträge
 
#5

Re: Ein Frame mit einem String mehrmals erstellen?

  Alt 4. Aug 2009, 10:01
okay, weiter gehen die Probleme... Also ich erstelle ja dynamisch ein Sheet und auf diesem Sheet wird ein dynamisch ein Frame geladen. Zum Test liegt auf dem Frame ein Memo1. Dies lädt Daten aus Dateien. wie kann ich nun aus der Hauptanwendung auf die Variablen der dynamischen Frames zugreifen?

Hier der Source
Delphi-Quellcode:
uses Unit2;
procedure TForm1.Button1Click(Sender: TObject);
var
  Sheet: TTabSheet;
  iFrame: TFrame2;
begin
  Sheet := TTabSheet.Create(PageControl1);
  Sheet.PageControl := PageControl1;
  Sheet.Parent := PageControl1;
  Sheet.Name := 'Sheet_' + IntToStr(i);

  iFrame := TFrame2.Create(Sheet);
  iFrame.Parent := Sheet;
  iFrame.Name := 'Frame_' + IntToStr(i);
  iFrame.Align := alClient;
  iFrame.Load(IntToStr(i)+'.ini');
  i := i + 1;
  PageControl1.ActivePageIndex := Sheet.PageIndex;
end;
und hier das Frame

Delphi-Quellcode:
unit Unit2;

interface

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

type
  TFrame2 = class(TFrame)
    Memo1: TMemo;
    procedure Load(Name: String);
  private
    { Private declarations }
  public
    { Public declarations }
    sNick, sPW, sNH: String; //wie kann ich auf diese Variablen aus Unit1 (Hauptanwendung) zugreifen?
  end;

implementation

{$R *.DFM}

procedure TFrame2.Load(Name: String);
begin
  Memo1.Lines.LoadFromFile(Name);
  sNick := Memo1.Lines[0];
end;
end.
Es wird immer eine Lösung geben...
...fragt sich nur wann!!!
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#6

Re: Ein Frame mit einem String mehrmals erstellen?

  Alt 4. Aug 2009, 11:19
Wenn auf dem TabSheet keine anderen Controls als das Frame liegen, geht das so:

PageControl1.ActivePage.Controls[0] as TFrame2 oder auch

PageControl1.Pages[I].Controls[0] as TFrame2
Uwe Raabe
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#7

Re: Ein Frame mit einem String mehrmals erstellen?

  Alt 4. Aug 2009, 11:29
Meine Glaskugel sagt mir, dass hier Funktion und Darstellung nicht getrennt sind
  Mit Zitat antworten Zitat
Antwort Antwort


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 16:35 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