Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.07.2008, 16:08   #11
NikLik
Форумчанин
 
Аватар для NikLik
 
Регистрация: 22.11.2007
Сообщений: 224
По умолчанию

Посмотри, может это поможет
Вложения
Тип файла: rar read_another_child.rar (2.0 Кб, 14 просмотров)
NikLik вне форума Ответить с цитированием
Старый 21.07.2008, 19:20   #12
KiberJo
Пользователь
 
Регистрация: 15.07.2008
Сообщений: 12
Вопрос

Спасибо за совет, попробовал ошибка стала выходить другая теперь пишет Invalid class typecast Скорее всего опять делаю что-то неправильно.
Опять прикрепляю весь проект, ну и листинг части кода.

Странно но почему то я могу считать какие-либо атрибуты самого MDIChild но не могу прочитать ничего из его элементов.

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

Код:
unit Unit3;

interface
...
type
  TForm3 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
...
var
  Form3:TForm3;
implementation
{$R *.dfm}
  Uses Unit1,Unit2;
procedure TForm3.Button1Click(Sender: TObject);
Var
  i:Integer;
  txt:String;
begin
for i:=0 to Form1.MDIChildCount -1 do begin
  if(Pos('Form2',Form1.MDIChildren[i].Caption) <> 0) then
    Break;
End;
if(i = MdiChildCount) then Dec(i);
if(Pos('Form2',Form1.MDIChildren[i].Caption) <> 0) then Begin
  with (Form1.MDIChildren[i] as TForm3).Edit1 do
    txt := Text;
  ShowMessage(txt);
End;
//Form2.Label1.Caption := Edit1.Text;
end;
...
end.
Вложения
Тип файла: rar test.rar (178.4 Кб, 5 просмотров)
KiberJo вне форума Ответить с цитированием
Старый 21.07.2008, 19:27   #13
KiberJo
Пользователь
 
Регистрация: 15.07.2008
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Манжосов Денис :) Посмотреть сообщение
А зачем у тебя обе формы имеют MdiChild, одну из них сделай FormStyle := fsNormal/
Если не найду способа заставить это все работать то так и сделаю и похороню MDIChild
KiberJo вне форума Ответить с цитированием
Старый 21.07.2008, 23:45   #14
Ring0Sn
Форумчанин
 
Аватар для Ring0Sn
 
Регистрация: 06.09.2007
Сообщений: 239
По умолчанию

KiberJo, пробуй указывать в таких ситуациях тип явно, а не через оператор AS
смотри аттач
Вложения
Тип файла: rar test.rar (172.2 Кб, 7 просмотров)

Последний раз редактировалось Ring0Sn; 21.07.2008 в 23:48. Причина: значит надо ;)
Ring0Sn вне форума Ответить с цитированием
Старый 22.07.2008, 11:17   #15
MAKEDON
The First Person!
Форумчанин
 
Аватар для MAKEDON
 
Регистрация: 07.08.2007
Сообщений: 228
По умолчанию

KiberJo, тебе надо чтобы при вводе в 3 форму и нажатии на клавишу чтобы текст в форме 2 менялся, а следовательно в форме 1 тоже?
Программа обычно делает то что вы ей сказали сделать, а не то что бы вы хотели, чтобы она сделала.
MAKEDON вне форума Ответить с цитированием
Старый 22.07.2008, 19:19   #16
KiberJo
Пользователь
 
Регистрация: 15.07.2008
Сообщений: 12
По умолчанию

Цитата:
Сообщение от MAKEDON Посмотреть сообщение
KiberJo, тебе надо чтобы при вводе в 3 форму и нажатии на клавишу чтобы текст в форме 2 менялся, а следовательно в форме 1 тоже?
Это вопрос или резюме?
Если вопрос то нет ненужно.
KiberJo вне форума Ответить с цитированием
Старый 22.07.2008, 19:58   #17
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

2KiberJo
Создание окон:
unit1:
Form2 := TForm2.Create(Application);
unit2:
Form3 := TForm3.Create(Application);

Тогда в unit3:TForm3.Button1Click можно делать
Form2.Label1.Caption := Edit1.Text;

invalid typecast из-за того, что Вы ищете Form2, а приводите к Form 3.
Исправьте:

Код:
if(Pos('Form2',Form1.MDIChildren[i].Caption) <> 0) then Begin
  with (Form1.MDIChildren[i] as TForm2).Edit1 do
И еще маленькое замечание. После выхода из цикла For значение счетчика неопределено. На мой взгляд лучше использовать while.

Последний раз редактировалось alexBlack; 22.07.2008 в 20:36.
alexBlack вне форума Ответить с цитированием
Старый 22.07.2008, 20:31   #18
KiberJo
Пользователь
 
Регистрация: 15.07.2008
Сообщений: 12
Смех

Цитата:
Сообщение от Ring0Sn Посмотреть сообщение
KiberJo, пробуй указывать в таких ситуациях тип явно, а не через оператор AS
смотри аттач
Спасибо да действительно все заработало
стоило указать
Код:
 with TForm3(Form1.MDIChildren[i]).Edit1 do
вместо
Код:
 with (Form1.MDIChildren[i] as TForm3).Edit1 do
и все изменилось...

Правда появилась другая трудность.Как заметил MAKEDON Мне нужно
Цитата:
чтобы при вводе в 3 форму и нажатии на клавишу чтобы текст в форме 2 менялся
Но у меня почему-то если я говорю что нужно поменять Edit1.Text то у меня меняется Button1.Caption Странно не правда ли? Жаль программу аттачить не могу. Хотя в том примере который прикреплял, как ни извращался все работает. Я конечно попробую написать отдельные фрагменты кода с нуля(может в ходе различных действий что-то куда не так и вписал), Но все-же может быть у кого была такая ситуация?
KiberJo вне форума Ответить с цитированием
Старый 22.07.2008, 20:34   #19
KiberJo
Пользователь
 
Регистрация: 15.07.2008
Сообщений: 12
По умолчанию

Цитата:
Сообщение от alexBlack Посмотреть сообщение
2KiberJo
Создание окон:
unit1:
Form2 := TForm2.Create(Application);
unit2:
Form3 := TForm3.Create(Application);

Тогда в unit3:TForm3.Button1Click можно делать
Form2.Label1.Caption := Edit1.Text;

invalid typecast из-за того, что Вы ищете Form2, а приводите к Form 3.
Исправьте:

Код:
if(Pos('Form2',Form1.MDIChildren[i].Caption) <> 0) then Begin
  with (Form1.MDIChildren[i] as TForm2).Edit1 do
И еще маленькое замечание. После выхода из цикла For значение счетчика неопределено. (Или уже что-то изменилось ? Это я себе - нужно посмотреть документацию). На мой взгляд лучше использовать while.
Спасибо за помощь я это не сам придумал, велосипед изобретен не мной я лиш прочитал то что посоветовал мне NikLik смотри выше. и сдалал все так как там описано...
KiberJo вне форума Ответить с цитированием
Старый 22.07.2008, 21:06   #20
Ring0Sn
Форумчанин
 
Аватар для Ring0Sn
 
Регистрация: 06.09.2007
Сообщений: 239
По умолчанию

Жесткач, все перепутали! плюнь лутче на все аттачи и напиши с нуля, ошибки походу просто в правильности применения рук!
Ring0Sn вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обмен данными между формами Maks1978 Общие вопросы C/C++ 3 22.07.2008 15:35
Связь между таблицами Катрина БД в Delphi 3 17.05.2008 18:24
Обмен данными между формами Demien Общие вопросы Delphi 14 23.04.2008 22:04
Общение между формами kate4ka Общие вопросы Delphi 2 10.03.2008 22:49
Как из Delphi программно создать связь между двумя базами Access? Dimm Microsoft Office Access 6 12.01.2007 14:35