TFrame a zmienne

0

Mój problem jest taki:
At Design Time zrobiłem sobie ramke (TFrame) z jakąś tam zawartością, w unicie związanym z tą ramką deklaruje i używam kilku zmiennych. Następnie (At Run time) tworze kilka kopii tej ramki i wstawiam na Forme. Właśnie w tym momencie pojawia się kłopot. Na formie pojawia się kilka kopii tej samej ramki i każdej z nich można jakby osobno używać... ale zmienne o których wcześniej wspomniałem są jakby wspólne. Podstawienie jakiejś wartości do zmiennej powoduje że ta zmienna ma tą wartość dla wszystkich kopii ramki. Zmienne te są więc jakby globalne... a jak zrobić żeby kazda kopia mojego TFrame miała swoje zmienne? Jak uczynić je lokalnymi?

Podejrzewam, że to dosc prosty problem ale nie potrafie sobie z nim poradzić. czy ktos mi pomoże? Z góry dzięki

0

POkaz w ktorym miejscu deklarujesz zmienne.
Wklej najlepiej kawalek kodu.

0

Oto fragment unitu związanego z ramką, jest w nim zadeklarowana

zmienna

Oto kod... całkiem zwyczajny, zwyczajniejszy byc nie może:

unit ramka;

interface

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

type
  TFrame2 = class(TFrame)
    Label1: TLabel;
    Label2: TLabel;
    Button1: TButton;
    Button2: TButton;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var zmienna: Integer;

implementation

{$R *.dfm}
// tu jakieś tam procedury

0
liba napisał(a)

type
TFrame2 = class(TFrame)
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
Button2: TButton;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var zmienna: Integer;

implementation

{$R *.dfm}
// tu jakieś tam procedury

</delphi>

Coz tak jak myslalem. Podstawowy blad, ktory robi sie podczas dynamicznego tworzenia. NIE MOZESZ !! deklarowac zmiennych za pomoca var. W ogole zapomnij o tym, podczas tworzenia dynamicznych formatek,komponentow, klas. Generalnie Ty tworzysz tylko to co jest pomiedzy type i end;. Wiec sam sie domysl, ze to var nie jest czescia klasy ktora tworzysz, co za tym idzie, formatkie nie wtorza dla siebie zmiennej: Integer.
Jesli chcesz jej uzywac, to MUSISZ zadeklarowac ja w sekcji publi,private etc. zaleznie od przeznacznenia.
Jesli zmienna ma byc dostepna dla innych, to ja upubliczniasz (czizez co za slowo :) w sekcji public, jesli ma byc dostepna tylko dla formatki, to naturalnie dajesz ja w private.
Poczytaj sobie helpa o tych sekcjach, to wyczujesz o co chodzi.
jakby co to pytaj

0

rzeczywiście, kardynalny błąd... dzieki za szybką odpowiedź

1 użytkowników online, w tym zalogowanych: 0, gości: 1