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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2010, 00:51   #1
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию Программно переключить закладки TabControl

Всем привет!

Ситуация:
Есть TabControl с 4 вкладками(TabSheet).
На одном из TabSheet(ну к примеру на 2-ом) если 2 обязательных поля ввода для заполнения.
Одна кнопка.
По нажатию кнопки происходить проверка на заполненность обязательных полей.

Если одно или все поля ввода пусты выводится сообщение. Но если юзер находится на на другой вкладке(т.е. не на той гдде отображены обязательные поля ввода) то, необходимо програмным способом переключить на нужный TabSheet и установить фокус в незаполненное поле.

Проблема:
Как это сделать?

П.С.
фокус ставится функцией Tcontrol.SetFocus?
Человек_Борща вне форума Ответить с цитированием
Старый 17.12.2010, 01:15   #2
_Engine_
Форумчанин
 
Регистрация: 29.06.2008
Сообщений: 603
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  TabControl1.TabIndex := TabControl1.TabIndex + 1;
end;
П.С.SetFocus - подойдет.
_Engine_ вне форума Ответить с цитированием
Старый 17.12.2010, 03:45   #3
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

думаю имелос ввиду так:

Код:
procedure TForm1.Button1Click(Sender: TObject);
var 
   a: byte;// индекс тои вкладки которая не прошла проверку
begin
  TabControl1.TabIndex := a;
end
;
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 17.12.2010, 19:01   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

неа неработает ...

Код:
    case HLR_MsgBox(RsMsgFullExePathNotExists, MB_OK or MB_ICONWARNING) of
      MB_OK:
        begin
        if (AppExePathEdit.Text = '') and (NameInAppsListEdit.Text = '') then
        begin
        Pages.TabIndex:=0;
        end;

        if (AppExePathEdit.Text = '') then
        begin
        Pages.TabIndex:=0;
        AppExePathEdit.SetFocus;
        end;

        if (NameInAppsListEdit.Text = '') then
        begin
        Pages.TabIndex:=0;
        NameInAppsListEdit.SetFocus;
        end;
          Exit;
        end;
    end;
Человек_Борща вне форума Ответить с цитированием
Старый 17.12.2010, 20:01   #5
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

а куда ето вписано, может событие не происходит, можно вес код?
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 17.12.2010, 21:33   #6
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

да, собственно так:
Код:
procedure TAddAppForm.AppyBtnClick(Sender: TObject);
begin
  if (AppExePathEdit.Text = '') or (NameInAppsListEdit.Text = '') then
  begin
    case HLR_MsgBox(RsMsgFullExePathNotExists, MB_OK or MB_ICONWARNING) of
      MB_OK:
        begin
        if (AppExePathEdit.Text = '') and (NameInAppsListEdit.Text = '') then
        begin
        AppAddPages.TabIndex:=0;
        end;

        if (AppExePathEdit.Text = '') then
        begin
 AppAddPages.TabIndex:=0;
        end;

        if (NameInAppsListEdit.Text = '') then
        begin
        AppAddPages.TabIndex:=0;
        end;
          Exit;
        end;
    end;

  end
  else
  begin
    AddAppForm.ModalResult := mrOk;
  end;
end;
Человек_Борща вне форума Ответить с цитированием
Старый 17.12.2010, 22:53   #7
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

скинь где объявляеш вот ето
Код:
case HLR_MsgBox(RsMsgFullExePathNotExists, MB_OK or MB_ICONWARNING) of
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 17.12.2010, 23:37   #8
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Код:
function HLR_MsgBox(MsgText: string; MsgBoxType: Cardinal): Integer;
begin
  Result := MessageBox(0, PAnsiChar(MsgText), PAnsiChar(RsMsgBoxCaption), MsgBoxType);
end;
Процедура "моего" messageBox заголовок уже задан, остаётся задавать только
текст сообщения, кнопку и иконку диалога. не в этом суть!

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

Последний раз редактировалось Человек_Борща; 17.12.2010 в 23:39.
Человек_Борща вне форума Ответить с цитированием
Старый 18.12.2010, 00:13   #9
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

у меня все нормално перекидываеца
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
   if (Edit1.Text='') or (Edit2.Text='') then
  begin
    if Edit1.Text='' then TabControl1.TabIndex:=1
    else TabControl1.TabIndex:=2

  end;
end;
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 18.12.2010, 00:17   #10
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

я не профи, но мне кажеца что тебе не нужен case
а вообше что в етои функцие происходит?
скинул бы ты всю прогу
VirusN13
ArtGrek вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переключение вкладок на TabControl программно Casper-SC Общие вопросы .NET 4 20.10.2011 14:00
TabControl evgenrpo Общие вопросы .NET 3 12.07.2011 01:34
tabControl C# Namolem Помощь студентам 0 14.06.2010 15:46
TabControl в Builder C++ 6 Think_cleaR Общие вопросы C/C++ 0 08.05.2009 12:13