Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.11.10;
Скачать: CL | DM;

Вниз

как найти и подсветить компоненты   Найти похожие ветки 

 
sniknik ©   (2013-02-08 10:25) [40]

> работало из одной формы по отношению к другой
указанием этой формы - Form25.FindComponent если ты об этом, а то сомнения берут... размышляешь о интегралах, а спрашиваешь как арифметическая операция работает.

> то ее придется переписывать, а задачу перекомпилировать, что вряд-ли удобно (если я правильно понял ваше предложение).
нда...ааа, сколько я подробного слышал, с каким жаром доказывали... "без компиляции", "удобно", "минимум для исправлений" и т.д. в итоге написание с "разрывом логики" (часть в программе, часть в базе) всегда приводило к правкам "и там и там".
либо в программе, либо в базе. если в базе то переноси всю проверку туда (триггер/процедура) из программы просто сохраняй, и обрабатывай эксепт. для подсветки придется процедуру проверки добавлять. туда же в базу. подсвечивать по результатам ее выполнения.


 
Алексндр_2012   (2013-02-08 11:53) [41]

Form25.FindComponent

До этого я додумался, но при компиляции получаю сообщение Undeclared identifire "TDBEdit" .  Добавил библиотеку DBCrls компиляция проходит, но когда программа доходит до выполнения

for I:=0 to masst.Count-1 do
 For j:=1 to 247 do
if TDBEdit(Main.FindComponent(‘DBEdit’+IntToStr(j))).DataField=masst[i] then TDBEdit(Main.FindComponent(‘DBEdit’+IntToStr(j))).Color:=clRed;
То программа вылетает с сообщением Project raised excption class EAccessViolation withmessage "Access violation at address 004B7038 ln module progr.exe. Read of address 00000240". Process stopped.
Но вот где ошибка...


 
sniknik ©   (2013-02-08 12:32) [42]

http://delphimaster.net/view/15-1360134224/


 
sniknik ©   (2013-02-08 12:35) [43]

более конкретизировано
http://www.gunsmoker.ru/2009/05/access-violation.html
Если ZZZ мало, то у вас идёт обращение по ссылке равной nil


 
sniknik ©   (2013-02-08 12:36) [44]

проверки на "найденость" компонента нет.


 
Inovet ©   (2013-02-08 13:37) [45]

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


 
Inovet ©   (2013-02-08 14:01) [46]

> [38] Алексндр_2012   (08.02.13 09:41)
> При этом данные уже внесены в таблицу, но окончательное
> сохранение можно прервать отдав команду Abort.

Не внесены они в таблицу.

И по поводу перекомпиляции. Наиболее вероятно, что изменится сначала сама форма, а потом уже и условия её проверки. Так что переделывать и перекомпилировать всё равно придётся.

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


 
Александр_2021   (2013-02-10 22:19) [47]


> Inovet ©   (08.02.13 13:37) [45]
>
> Вообще ненадёжно привязываться к номеру едита. Назови ты
> их по другому, или просто что измени и всё. Я же предлагал
> - ищи по полю, ссылка на поле есть в едите. Т.е. у тебя
> есть список имён полей, ему сопоставляешь соответсвующие
> едиты при переборе всех контролов.
>

Согласен, плохо привязываться к номеру DBEdit. Но что-то совсем запутался. DBEdit, конечно знает к какому полю он привязан, а вот наоборот. Как сопоставить поля DBEdit-ам?


 
Игорь Шевченко ©   (2013-02-10 22:45) [48]


> Как сопоставить поля DBEdit-ам?


[7],[9]


 
Александр_2012   (2013-02-11 12:03) [49]

Всё, всем спасибо. Сделал. Может и не совсем грамотно, но работает.

for j:=0 to masst.Count-1 do
 begin
 for i:=0 to MainFormKart.ComponentCount-1 do
   begin
   Temp:=MainFormKart.Components[i];
   if (Temp is TDBEdit) and ((Temp as TDBEdit).DataField=masst[j]) then
     (Temp as TDBEdit).Color:=clFuchsia;
   end;
 end;

Может кому и пригодится.



Страницы: 1 2 вся ветка

Текущий архив: 2013.11.10;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.011 c
15-1369487360
О-Сознание
2013-05-25 17:09
2013.11.10
Плавно преобразовать один цвет в другой.


2-1360416527
Cyber Icarus
2013-02-09 17:28
2013.11.10
Как получить все значения энума в строкой массив


6-1269002967
Domkrat
2010-03-19 15:49
2013.11.10
Login на Google


15-1369684251
ProgRAMmer Dimonych
2013-05-27 23:50
2013.11.10
TEdit, Win32 EDIT control и Alt+13


15-1369035927
Skyle
2013-05-20 11:45
2013.11.10
Вакансия "Программист Delphi". г. Новосибирск