Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.25;
Скачать: CL | DM;

Вниз

Не видит глобальную переменную   Найти похожие ветки 

 
Perf2k2 ©   (2006-06-06 10:28) [0]

Всем привет. Такая проблема: объявляем в unit2 (frmMain) глобальную переменную:
 
public
   global_account_id: string;
   global_account_login: string;
end;

А в unit1 (frmEnter) присваиваем ей значение и закрываем frmEnter:

  Application.CreateForm(TfrmMain, frmMain);

  frmMain.global_account_id:=DataSource1.DataSet.FieldByName("account_id").Text;
  frmMain.global_account_login:=DataSource1.DataSet.FieldByName("account_login").T ext;

  frmMain.ShowModal;

  frmEnter.Close;
  frmEnter.Release;

Потом пытаюсь вывести в статусбаре frmMain значения переменных, но в статусбаре выводится только ""ID: Login: ":

// заполняем статусбар
StatusBar1.Panels[0].Text := "ID: " + frmMain.global_account_id + " Login:" + frmMain.global_account_login;


Заранее спасибо!


 
Ega23 ©   (2006-06-06 10:32) [1]


> Всем привет. Такая проблема: объявляем в unit2 (frmMain)
> глобальную переменную:


1. Ты объявляешь не "глобальную" переменную, а public-поле класса TfrmMain. А это разные вещи.
2. Чему равно значение frmMain.global_account_id и frmMain.global_account_login перед frmMain.ShowModal;?


 
Сергей М. ©   (2006-06-06 10:32) [2]


> глобальную переменную:
>  
> public
>    global_account_id: string;
>    global_account_login: string;
> end;


Это не "глобальные переменные".
Это публичные поля класса.


 
Perf2k2 ©   (2006-06-06 10:34) [3]


> 1. Ты объявляешь не "глобальную" переменную, а public-поле
> класса TfrmMain. А это разные вещи.

Извиняюсь :) А как объявить глобальную. ПОмнится в ВБ именно так они объявлялись...

> 2. Чему равно значение frmMain.global_account_id и frmMain.
> global_account_login перед frmMain.ShowModal;?

ЭЭэ.. значения из базы берутся, что-то типа "1" и "Никита" соответственно.


 
ЮЮ ©   (2006-06-06 10:35) [4]


> Потом пытаюсь вывести в статусбаре frmMain значения переменных


Потом, это когда? В каком обработчике? Почему не написать это там же, перед
frmMain.ShowModal?  StatusBar1 это с какой формы?


 
Ega23 ©   (2006-06-06 10:37) [5]


> ЭЭэ.. значения из базы берутся, что-то типа "1" и "Никита"
> соответственно.


ой... у тебя StatusBar на FormCreate заполняется, что-ли?


 
Perf2k2 ©   (2006-06-06 10:38) [6]

Потом, это когда? В каком обработчике? Почему не написать это там же, перед
frmMain.ShowModal?  StatusBar1 это с какой формы?

Это на событиие FormCreate формы frmMain (здесь же и статус). Дело в том, что я вывожу лишь для того, чтобы проверить, видны ли эти переменные в данной форме, т.к. мне они будут нужны в этой форме и не в этой тоже очень часто, и не только в статусе. грубо говоря, здесь хранится инфа о пользователе, который находится в программе (после аутентификации).


 
Perf2k2 ©   (2006-06-06 10:38) [7]

ой... у тебя StatusBar на FormCreate заполняется, что-ли?
Да, забыл сказать ((


 
Ega23 ©   (2006-06-06 10:41) [8]


> Это на событиие FormCreate формы frmMain (здесь же и статус).


Всё понятно. И что ты хочешь: ты  StatusBar1.Panels[0].Text заполнил ДО присвоения твоим global_account_id и global_account_login значений из набора данных.
А надо делать после. Я бы сделал эти переменные как public-property с приватной процедурой записи.


 
Perf2k2 ©   (2006-06-06 10:45) [9]


> А надо делать после.

Блин! Точно! Как это я не сообразил... То есть, грубо говоря, нужно просто поставить это на событии OnShow... Здесь понятно, спасибо.
А вот это сочетание слов:

> Я бы сделал эти переменные как public-property с приватной
> процедурой записи.

мне понять очень сложно. Что значит с приватной процедурой записи?


 
Ega23 ©   (2006-06-06 10:58) [10]


> То есть, грубо говоря, нужно просто поставить это на событии
> OnShow...


Не надо так делать.


> мне понять очень сложно. Что значит с приватной процедурой
> записи?


public
  property global_account_id: string read Fglobal_account_id write SetFglobal_account_id;
  property global_account_login: string reaf Fglobal_account_login write SetFglobal_account_login;
end;


потом жмёшь Ctrl+Shift+C и у тебя добавится в класс фомы 2 поля Fglobal_account_id и второе и две private-процедуры.
А вот в этих процедурах уже и заполняй свой StatusBar:


procedure TfrmMain.SetFglobal_account_login(const Value:String);
begin
 Fglobal_account_login:=Value;
  StatusBar1.Panels[0].Text := "ID: " + Fglobal_account_id + " Login:" + Fglobal_account_login;
end;

и

procedure TfrmMain.SetFglobal_account_ID(const Value:String);
begin
 Fglobal_account_ID:=Value;
  StatusBar1.Panels[0].Text := "ID: " + Fglobal_account_id + " Login:" + Fglobal_account_login;
end;



 
Perf2k2 ©   (2006-06-06 11:17) [11]

Я конечно извиняюсь, но я мне хочется понять как это все работает, а не просто списАть код. Я прросто никак не пойму когда выполняются функции Fglobal_account_id  и SetFglobal_account_id. Получается, что первая исполняется когда я пытаюсь из переменной global_account_id прочитать значение,  вторая - когда я пытаюсь его туда запихнуть чтоли?


 
Сергей М. ©   (2006-06-06 11:20) [12]


> первая исполняется когда я пытаюсь из переменной global_account_id
> прочитать значение,  вторая - когда я пытаюсь его туда запихнуть
> чтоли?
>


Да, правильно.

Только "первая" - это не функция, а непосредственно идентификатор приватного поля класса.


 
Perf2k2 ©   (2006-06-06 11:21) [13]


> Да, правильно.


Офигеть.. Сколько же возможностей у Делфи...



Страницы: 1 вся ветка

Текущий архив: 2006.06.25;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.01 c
6-1139817774
Anton_123
2006-02-13 11:02
2006.06.25
Delphi, Web & RealVideo


15-1149268194
ArtemESC
2006-06-02 21:09
2006.06.25
Программка...


2-1149685074
AlexanderMS
2006-06-07 16:57
2006.06.25
Как хранится переменная типа String в памяти.


1-1147967851
agaga
2006-05-18 19:57
2006.06.25
Запретить растягивать картинку


2-1149410039
Wood
2006-06-04 12:33
2006.06.25
WebSnap приложение.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский