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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.02.2015, 22:05   #11
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Там компиляция происходит без ошибок, а вот при ONClick на листбокс выскакивает такая ошибка
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 08.02.2015, 22:11   #12
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Так я и спрашиваю - на какой строке метода. И весь свой код покажи этого метода
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 08.02.2015, 22:32   #13
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Вот весь проект
Вложения
Тип файла: zip пробы.zip (6.4 Кб, 6 просмотров)
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 08.02.2015, 22:38   #14
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А зачем он? Подозреваю, что вообще не умеешь пользоваться отладчиком, если слабо показать строку, на которой ошибка во время выполнения. Для новичка простительно, дык уже почти три года на форуме и куча делфийских тем
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 08.02.2015, 23:08   #15
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Разобрался, но нужно было добавить форм2, теперь идея такая, заполнить ее компонентами, и в зависимости от выбранной записи в листбоксе выполнять нужные действия. Спасибо. Память, занимаемая Форм2 освободится после закрытия приложения?

Код:
procedure TForm1.ListBox1Click(Sender: TObject);
var i: Integer;
begin
  if ListBox1.ItemIndex >= 0 then begin
    for i := 0 to Screen.FormCount - 1 do
      if (Screen.Forms[i] is TForm1) and (Screen.Forms[i].Tag = ListBox1.ItemIndex) then
      begin

//    if (Screen.Forms[i] is TForm2) and (Screen.Forms[i].Caption=ListBox1.Items.Strings[ListBox1.ItemIndex]) then begin
        Screen.Forms[i].Show;
        Exit;
      end;

   with TForm2.Create(Application) do begin
      Caption := ListBox1.Items.Strings[ListBox1.ItemIndex];
      Tag := ListBox1.ItemIndex;
      Show;
    end;
  end;
end;
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 08.02.2015, 23:28   #16
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

if (Screen.Forms[i] is TForm2) and (Screen.Forms[i].Tag = ListBox1.ItemIndex) then
Цитата:
теперь идея такая, заполнить ее компонентами
Зачем заполнять компонентами? Этот подход для создания нескольких однотипных форм. Если у них разное компонентное содержимое он плохой
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 08.02.2015 в 23:32.
Аватар вне форума Ответить с цитированием
Старый 10.02.2015, 11:09   #17
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Спасибо! Почему вы выделили tform2? При tform2 работает не так. Можете объяснить условие:
Код:
if (Screen.Forms[i] is TForm1) and (Screen.Forms[i].Tag = ListBox1.ItemIndex) then
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 10.02.2015, 11:19   #18
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Почему вы выделили tform2
Потому что ищу формы именно этого типа. TForm1 зачем искать?
Цитата:
При tform2 работает не так
У меня так
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 28.04.2015, 01:20   #19
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Ребят, а как уничтожить все дочерние формы открытые при событии, например по кнопке : закрыть все окна
Код:
procedure TForm6.CheckListBox1DblClick(Sender: TObject);
var s: string;
  ii: integer;
begin
  if CheckListBox1.ItemIndex = -1 then Exit;


  CheckListBox1.OnClick(Self);




  if CheckListBox1.ItemIndex >= 0 then begin
    for ii := 0 to Screen.FormCount - 1 do
      if (Screen.Forms[ii] is TForm7) and (Screen.Forms[ii].Tag = CheckListBox1.ItemIndex) then
      begin

        Screen.Forms[ii].Show;
        Exit;
      end;

    with TForm7.Create(Application) do begin
      Caption := CheckListBox1.Items.Strings[CheckListBox1.ItemIndex];
      Tag := CheckListBox1.ItemIndex;

      memo1.lines.LoadFromFile(ts_two.strings[CheckListBox1.itemindex]); 
      memo1.text := form2.decrypt(memo1.text, 'ключ'); 
      s := CheckListBox1.Items[CheckListBox1.itemindex]; 
      Caption := Copy(s, Pos(') ', s) + 2, length(s)); 
      Memo1.Font.size := 12;
      Width := 550;
      Show;
    end;
  end;              
end;

Пробовал так, уничтожает только одну форму:
Код:
procedure TForm6.FormClose(Sender: TObject; var Action: TCloseAction);
var ii:Integer;
begin

    for ii := 0 to Screen.FormCount - 1 do
      if (Screen.Forms[ii] is TForm7)  then
      begin
        Screen.Forms[ii].hide;
          Screen.Forms[ii].free;//если не освобождать память-все работает
        Exit; //если не написать, то добавляется ошибка List index out of bounds 
      end;

  form6.Hide;
  form1.Position := poScreenCenter;
  form1.show;
end;
from dark to light)

Последний раз редактировалось Алексей_2012; 28.04.2015 в 01:29.
Алексей_2012 вне форума Ответить с цитированием
Старый 28.04.2015, 03:39   #20
ДралсяСошибками
Форумчанин
 
Аватар для ДралсяСошибками
 
Регистрация: 31.05.2011
Сообщений: 301
По умолчанию

Не знаю, что у тебя там за программа, но с динамическими объектами удобнее работать с помощью: TObjectList, TComponentList, TList и прочими подобными зверьками))
Пример создания и удаления форм:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  FormList: TObjectList;
  Form: TForm;
  i: Integer;
begin
  FormList := TObjectList.Create;
    for i := 0 to 29 do
      begin
        Form := TForm.Create(nil);
        Form.Left := Random(100);
        Form.Top := Random(100);
        Form.Show;
        FormList.Add(Form);
      end;
  FormList.Clear;
end;
Соответственно, с таким списком удобно работать в дальнейшем)))
ДралсяСошибками вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание форм Михаил Юрьевич Общие вопросы Delphi 5 16.07.2012 03:41
Динамическое создание romanzi Общие вопросы Delphi 1 24.08.2011 12:20
Создание нескольких форм Лера123 Общие вопросы Delphi 4 16.10.2010 18:16
Создание форм DeNyS=) Microsoft Office Access 2 13.12.2009 15:30
Динамическое создание нескольких форм Gypsy Общие вопросы Delphi 18 21.10.2009 14:52