Форум: "Основная";
Текущий архив: 2003.07.17;
Скачать: [xml.tar.bz2];
ВнизВопрос про форму Найти похожие ветки
← →
AndrewVolkov (2003-07-04 12:40) [0]Добрый день.
Помогите разобраться
Есть MDI приложение. Из главной формы я создаю SDI форму
procedure TfmMain.aAddPeopleExecute(Sender: TObject);
begin
with tfmPeople.Create(Application) do
try
Show;
finally
end;
end;
Соответственно из Project Source строка
Application.CreateForm(TfmPeople, fmPeople);
убрана.
Трабла в следующем. Если форма fmPeople создана и я хочу обратиться к какому-нибудь ее компоненту, к примеру
Value_:=fmPeople.EdName.Text;
Я получаю access violation. А если смотреть через отладчик - проблема в том что
fmPeople=nil
Отсюда и вопрос. Как к ней обратиться??? На сколько я понимаю она создается типа TfmPeople - но имя у нее уже не fmpeople
← →
ЮЮ (2003-07-04 12:49) [1]procedure TfmMain.aAddPeopleExecute(Sender: TObject);
begin
if fmpeople = nil then fmpeople := tfmPeople.Create(Application);
fmpeople.Show;
end;
← →
AndrewVolkov (2003-07-04 12:54) [2]А если их у меня может быть больше одной???
Как мне их тогда различать?
← →
ЮЮ (2003-07-04 13:08) [3]А сейчас ты как их различаешь? :-)
Всё равно, по хорошему, тебе fmpeople нужна только до fmpeople.Show, а дальше она находится в "свободном плавании" и некрасиво лезть к ней Value_:=fmPeople.EdName.Text, тем более когда их несколько.
зачем в MDI приложение несколько экземпляров SDI-форм, тогда уж их и делать как MDIChild
← →
Юрий Федоров (2003-07-04 13:09) [4]Нужно убрать глобальную переменную
fmpeople
нафиг.
И держать список созданных форм типаTfmPeople
.
Каким образом организовать список - тут уж хозяин-барин
← →
AndrewVolkov (2003-07-04 13:18) [5]Как МДИ она мне не нужна
На МДИ чайлде расположен список людей в гриде.
Когда на них щелкаешь, появляется эта SDI с FormStyle=fsStayOnTop
Там более подробная инфа плюс фото.
Когда щелкаешь на Фото, появляется уже Модальная СДи, где только Фото в ув. размере.
Вся фигня в том, что когда СтайонТопов делают более одного, как потом узнать у кого какая фото для увеличения. Вот я и хотел обращаться к fmPeople.Image.Picture чтобы закачать из имаджа fmPeople в имадж fmFoto
← →
ЮЮ (2003-07-04 13:23) [6]>Вот я и хотел обращаться к fmPeople.Image.Picture чтобы закачать из имаджа fmPeople в имадж fmFoto
Всё это надо сделать в обработчике экземпляра формы TfmPeople, а затем уже показать TfmFoto, а не наоборот
← →
AndrewVolkov (2003-07-04 13:28) [7]В смысле??
Через глобальную переменную типа TPicture??
← →
ЮЮ (2003-07-04 13:43) [8]fmFoto ты где создаешь? Надеюсь в обработчике OnClick компонента на TfmPeople. В этот момент все компоненты формы тебе доступны безо всяких fmPeople.
← →
AndrewVolkov (2003-07-04 13:56) [9]Чего то я стормозил. Да спасибо - все идет.
Теперь только почему - то размеры фото в пикселях нулевые, хотя фото передается...
← →
AndrewVolkov (2003-07-04 14:00) [10]
fmFoto:=TFmFoto.Create(Application);
fmFoto.FotoView.Picture:=Foto.Picture;
fmFoto.ShowModal;
procedure TfmFoto.FormActivate(Sender: TObject);
begin
ViewPicture;
end;
procedure TfmFoto.ViewPicture;
begin
try
begin
try begin
if FotoView.Picture.Height>600 then begin
Height = 0???
← →
ЮЮ (2003-07-04 14:14) [11]М.б. FormActivate возникает до fmFoto.ShowModal, например при Create? М.б. лучше ViewPicture сделать public и
fmFoto.FotoView.Picture.assign(Foto.Picture);
fmFoto.ViewPicture;
fmFoto.ShowModal;
← →
AndrewVolkov (2003-07-04 14:20) [12]Ну так вроде правильно.
Форму создали, картину закачали.
Так насколько я понимаю, при СшоуМодале - срабатывает Активаейт и там уже размеры картинки должны быть??? Или я чего то не так совсем уже ;-((
← →
AndrewVolkov (2003-07-04 14:24) [13]блин, вот свинья какая, я думал, когда он будет шоу делать у него еще раз активейт отработает.
Всю свою лоховизну понял.
Всем спасибо
Сорри за долботню мою
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.07.17;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.009 c