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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.09.2012, 19:47   #1
tarasov_88
Пользователь
 
Регистрация: 07.09.2012
Сообщений: 17
По умолчанию прописать дополнительное условие (if, then,else) delphi

Весь день голову себе ломаю, не могу прописать в свой код дополнительное условие.

Код:
if TryStrToDate((Components[j] as TEdit).Text,d)
            and (d - date <= 14)  then 

            for i:=0 to Application.MainForm.ComponentCount-1 do
           if (Application.MainForm.Components[i].Name = 'Panel1')  then
           (Application.MainForm.Components[i] as TPanel).Color:=clRed;
в общем если условие выполняется, то меняется на главной форме цвет панели на красный, если не выполняется, то нужно поменять на белый,если просто прописываю:

Код:
if TryStrToDate((Components[j] as TEdit).Text,d)
            and (d - date <= 14)  then

            for i:=0 to Application.MainForm.ComponentCount-1 do
           if (Application.MainForm.Components[i].Name = 'Panel1')  then
           (Application.MainForm.Components[i] as TPanel).Color:=clRed else
           (Application.MainForm.Components[i] as TPanel).Color:=clwindow
то не работает.
Помогите пожалуйста!

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

В общем, нашел как обратиться к самой panel1 на главной форме:
Код:
TPanel(Application.MainForm.FindComponent('Panel1')).Color:=clred
но все равно не получается, в общем нужно чтоб одновременно с edit менялся цвет, вот полностью код:
Код:
procedure TForm2.FormCreate(Sender: TObject);
begin
  AssignFile(f, '1A.txt');
  ReSet(f);
  for j := 0 to ComponentCount -1  do
    if Components[j] is TEdit then
    begin
           ReadLn(f, H);
          (Components[j] as TEdit).Text:=H;

           if TryStrToDate((Components[j] as TEdit).Text,d)
           and (d - date <= 14)  then begin

           (Components[j] as TEdit).color:=clRed;
           TPanel(Application.MainForm.FindComponent('Panel1')).Color:=clred
           end
            else
            begin
           (Components[j] as TEdit).color:=clwindow;
           TPanel(Application.MainForm.FindComponent('Panel1')).Color:=cwindow
*end;
end;
  CloseFile(f);
end;
Он не работает, в частности последняя строка, где panel1 меняет цвет на белый.
как его грамотно оформить?

Последний раз редактировалось tarasov_88; 10.09.2012 в 21:10.
tarasov_88 вне форума Ответить с цитированием
Старый 10.09.2012, 21:17   #2
SNUPY
Форумчанин
 
Регистрация: 15.02.2008
Сообщений: 621
По умолчанию

т.е. не работает? ругается на что-то или просто выполняется, но не меняет цвет?
Помог? Ну так нажми на весы!
SNUPY вне форума Ответить с цитированием
Старый 10.09.2012, 21:22   #3
tarasov_88
Пользователь
 
Регистрация: 07.09.2012
Сообщений: 17
По умолчанию

Цитата:
Сообщение от SNUPY Посмотреть сообщение
т.е. не работает? ругается на что-то или просто выполняется, но не меняет цвет?
не ругается, выполняется, точнее всегда выполняется, независимо от того выполнилось условие или нет. последняя строка должна выполняться, только в случае ELSE, но она выполняется в любом случае. блин сумбур какой-то(

В общем понял в чем причина: для него это условие всегда выполняется. Нужно поменять условие.
Как завязать чтоб менялся цвет panel1 на красный, если хотя бы один edit красный?

Как описать это условие?:

Код:
if хотя бы один Edit из всех edit красный then

Последний раз редактировалось tarasov_88; 10.09.2012 в 21:57.
tarasov_88 вне форума Ответить с цитированием
Старый 10.09.2012, 23:07   #4
SNUPY
Форумчанин
 
Регистрация: 15.02.2008
Сообщений: 621
По умолчанию

ну тогда нужно пробежаться по всем Эдитам по форме в цикле и их проверить
Помог? Ну так нажми на весы!
SNUPY вне форума Ответить с цитированием
Старый 10.09.2012, 23:14   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Примерно так:
Код:
procedure TForm2.FormCreate(Sender: TObject);
var
t:boolean;
begin
  t:=false;
  AssignFile(f, '1A.txt');
  ReSet(f);
  for j := 0 to ComponentCount -1  do
    if Components[j] is TEdit then
    begin
           ReadLn(f, H);
          (Components[j] as TEdit).Text:=H;

           if TryStrToDate((Components[j] as TEdit).Text,d)
           and (d - date <= 14)  then
		   begin
		    (Components[j] as TEdit).color:=clRed;
			t:=true;
           end
           else
           (Components[j] as TEdit).color:=clwindow;
	end;
	if t then
		TPanel(Application.MainForm.FindComponent('Panel1')).Color:=clred;
  CloseFile(f);
end;
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 11.09.2012, 20:33   #6
tarasov_88
Пользователь
 
Регистрация: 07.09.2012
Сообщений: 17
По умолчанию

BDA, огромное спасибо! все заработало!)
tarasov_88 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать дополнительное окно? hvs1987 JavaScript, Ajax 6 27.01.2012 13:58
как прописать удаленное подключение в delphi к базе access? undead92 Работа с сетью в Delphi 6 18.01.2012 14:40
Добавить в XML дополнительное поле используя appendChild. Alfiks Microsoft Office Excel 1 14.03.2011 12:59
Дополнительное условие - работа с файлами trigger Общие вопросы Delphi 0 28.01.2011 05:00
Как прописать условие? bwitcher Помощь студентам 7 18.12.2010 01:02