|
Тема |
Re: Проблем с оцветяването [re: ozzoz] |
|
Автор |
s1ckbOy (непознат
) |
|
Публикувано | 28.05.09 10:50 |
|
|
Имам Page Control с два TabSheet-a. На единият TabSheet имам DBGrid който ми визуализира само някои от полетата в таблица от БД, и бутон с процедура която ще обходи всички записи. На другия TabSheet имам DBEdit компоненти които визуализират всички полета от таблицата в БД за текущият запис (този който в момента е посочен в Grid-a на Tabsheet1). Процедурата ми прави текстов файл в който са ми нужни някои полета които DBGrid-a не показва. Така процедурата прави проверка кои не са попълнени преди да генерира текстовия файл и ако има такива сменям от Tabsheet1 ---> на Tabsheet2 и оцветявам всички празни DBEdit-и в червено и казвам "Червените полета са задължителни трябва да се попълнят"....
Например:
Ако имам празни полета в 20тия запис от Grida процедурата спира , показва Tabsheet2 и оцветява кое да се попълни. Правя си корекциите и пускам отново. Намирам пак празни полета на 32рия запис и процедурата отново ме прехвърля на Tabsheet2, но не оцветява !! Работата е там че записите нямат номерация и немога да ги обходя и посоча всички които имат празни полета още в началото.
//-------------------------------------- Проверката-----------------------------------//
function TfDokumenti.CheckFields: Boolean;
var Poleta:TStringList;
j:integer;
begin
Poleta:=TStringList.Create;
Result:=True;
if dmLocal.sqPlatejniDATA_PREDST.AsString=EmptyStr then Poleta.Add('dbeDataPredst');
if dmLocal.sqPlatejniDATA_DOK.AsString=EmptyStr then Poleta.Add('dbeDokData');
if dmLocal.sqPlatejniDATA_IZPAL.AsString=EmptyStr then Poleta.Add('dbeDataIzpaln');
if dmLocal.sqPlatejniIBAN.AsString=EmptyStr then Poleta.Add('dbeBankaIBAN');
if dmLocal.sqPlatejniNAREDITEL.AsString=EmptyStr then Poleta.Add('dbeNareditel');
if dmLocal.sqPlatejniBIC.AsString=EmptyStr then Poleta.Add('dbeBankaBIC');
if dmLocal.sqPlatejniBANKA_IME.AsString=EmptyStr then Poleta.Add('dbeBankaIme');
if dmLocal.sqPlatejniKL_BIC.AsString=EmptyStr then Poleta.Add('dbeKlBankaBIC');
if dmLocal.sqPlatejniKL_BANKA_IME.AsString=EmptyStr then Poleta.Add('dbeKlBankaIme');
if Poleta.CommaText<>EmptyStr then
begin
TabSheet2.Show;
for j:=0 to Poleta.Count-1 do
begin
if FindComponent(Poleta.Strings[j]).ClassNameIs('TDBEdit') then
begin
(FindComponent(Poleta.Strings[j]) as TDBEdit).Color:=clRed;
(FindComponent(Poleta.Strings[j]) as TDBEdit).Repaint;
end;
end;
MessageDlg('Попълни червените!',mtWarning,[mbOK],0);
Result:=False;
FreeAndNil(Poleta);
end;
//---------------------------------------------------------------------------------------//
Ако това нещо върне false процедурата ми спира.
|
| |
|
|
|