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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.04.2011, 10:24   #1
Kata
 
Регистрация: 12.05.2010
Сообщений: 7
По умолчанию MDI переключение окон

Всем привет!
В моем приложении создаются MDI окна и вкладки TabControl'а:

Код:
procedure TMainForm.CreateMDIChild(const Name: string);
var
  Child: TMDIChild;
begin
  { create a new MDI child window }
  Child := TMDIChild.Create(Application);
  Child.Caption := Name;
  if FileExists(Name) then Child.Memo1.Lines.LoadFromFile(Name);
  TabControl1.Tabs.Add(Name);
end;
И я хочу при переключении вкладок TabControla'а переключать окна
Вот такое событие OnChange:

Код:
procedure TMainForm.TabControl1Change(Sender: TObject);
begin
  MDIChildren[TabControl1.TabIndex].Show;
end;
И не работает(((
Замучался уже((
Помогите!

Последний раз редактировалось Stilet; 23.04.2011 в 16:17.
Kata вне форума Ответить с цитированием
Старый 23.04.2011, 12:05   #2
ror13
 
Регистрация: 09.12.2010
Сообщений: 5
По умолчанию

не всё так просто.... по идеи у тебя даже твои окна недолжны появляться...
придётсо гуглить или могу на мыло скинуть готовый код другой программы... но там много ненужного тебе... но суть таже...
вот код создания.. обрати внимание на создание grid и сравни со своим

Код:
gridtabsheet:= ttabsheet.Create(self);
gridtabsheet.PageControl:= pagecontrol1;
gridtabsheet.Caption:= opendialog1.FileName;
gridtabsheet.Visible:=true;
grid:=tdbgrid.Create(self);
grid.Parent:= gridtabsheet;
grid.Align:= alclient;
grid.Visible:= true;
ClientDataSet:= tClientDataSet.Create(nil);
DataSource:=tDataSource.Create(nil);
а вот тебе пример поиска(переключения)

Код:
procedure TForm2.PageControl1Change(Sender: TObject);
var
I: integer;
c: integer;
begin
for I := 0 to PageControl1.ActivePage.ControlCount - 1 do
if PageControl1.ActivePage.Controls[I] is tdbgrid then
begin
grid:=tdbgrid(PageControl1.ActivePage.Controls[I]);
searchingoption.Clear;
for c := 0 to grid.Columns.Count - 1 do
searchingoption.Items.Add(grid.Columns.Items[c].FieldName);
end;
searchingoption.ItemIndex:=0;
end;
зы: вроде енто именно то что ты спрашивал, хотя у мну голова своим забита, даже интерпретировать на твой лад код лень((...
ror13 вне форума Ответить с цитированием
Старый 23.04.2011, 12:33   #3
Kata
 
Регистрация: 12.05.2010
Сообщений: 7
По умолчанию

Это ваще не в тему!
У меня используется TabControl и MDI Окна!
Kata вне форума Ответить с цитированием
Старый 23.04.2011, 13:01   #4
ror13
 
Регистрация: 09.12.2010
Сообщений: 5
По умолчанию

интерпретируй ... эта процедура у тебя ошибочна...
procedure TMainForm.CreateMDIChild(const Name: string);
повторю не всё так тривиально...
вы создаете своё миди окно а родителя окна куда дели?....
Child.Parent:=??? думайте... или оно у вас в цифровой абстракции висеть должно?
вторая тоже не верна...
я вам выложил код для 1 и 2 процедуры но с другими объектами... сомневаюсь лишь в том, что в вашем случае реализация мб проще(для 2-ой процедуры)...
ror13 вне форума Ответить с цитированием
Старый 23.04.2011, 17:06   #5
eduard93
Форумчанин
 
Регистрация: 06.12.2010
Сообщений: 300
По умолчанию

http://forum.ru-board.com/topic.cgi?...33&topic=11350
eduard93 вне форума Ответить с цитированием
Старый 25.04.2011, 17:20   #6
Kata
 
Регистрация: 12.05.2010
Сообщений: 7
По умолчанию

Всем спасибо вы меня только запутали) Помогли на другом форуме:
Код:
procedure TMainForm.CreateMDIChild(const Name: string);
var
  Child: TMDIChild;
begin
  { create a new MDI child window }
  Child := TMDIChild.Create(Application);
  i:=i+1;
  Child.Caption := Name + IntToStr(i);
  Child.WindowState := wsMaximized;
  TabControl1.Tabs.Add(Name + IntToStr(i));
end;
procedure TMainForm.TabControl1Change(Sender: TObject);
var
 j:integer;
begin
  for j:=1 to MDIChildCount do
  begin
    if MDIChildren[j].Caption = TabControl1.Tabs[TabControl1.TabIndex] then
    begin
      MDIChildren[j].Show;
      break;
    end;
  end;
end;
Kata вне форума Ответить с цитированием
Старый 25.04.2011, 17:54   #7
eduard93
Форумчанин
 
Регистрация: 06.12.2010
Сообщений: 300
По умолчанию

А на каком форуме вы получили больше знаний?
eduard93 вне форума Ответить с цитированием
Старый 25.04.2011, 20:02   #8
Kata
 
Регистрация: 12.05.2010
Сообщений: 7
По умолчанию

Не хотел рекламировать, но:
http://forum.delphiexpert.ru/index.php
Kata вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переключение звуковух ) Fragman Общие вопросы Delphi 5 28.08.2010 00:03
Непонятное переключение окон Windы elezar Безопасность, Шифрование 4 12.02.2010 14:16
PageControl как панель кнопок открытых окон в MDI приложении Vit@L Общие вопросы Delphi 10 22.12.2009 13:50
Передача параметра с MDI родителя в MDI child через DLL ByXalkin Общие вопросы Delphi 0 15.12.2009 17:21
Расположение дочерних MDI окон слева-направо и сверху-вниз Umdis Общие вопросы Delphi 2 30.11.2009 07:05