Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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


Страницы:   1 2 3

Александр_2012 ©   (2013-02-04 16:18:00) 

Доброго дня.
Задача: есть компонент PageControl, на нескольких страницах которого расположены компоненты DBEdit. Программа проверяет логику заполнения (зависимости между различными полями БД) и выводит сообщения в Memo обо всех несоответствиях. Есть StringList куда прописываются наименования полей, в которых допущена ошибка в логике заполнения. Это всё работает. Хотелось бы при двойном щелчке на сообщении в Memo чтобы производился поиск по всем страницам PageControl компонентов DBEdit, которые относятся к полям неправильно заполненным (с нарушением логики заполнения) и чтобы эти компоненты были подсвечены, например цветом шрифта, чтобы пользователь сразу мог определить где сделана ошибка. Не могу сообразить как это сделать, но уверен, что вполне возможно.


Игорь Шевченко   (2013-02-04 18:03:00) [41]


> Мне кажется, что здесь скорее подходит что-то типа FindComponent,
>  но как это реализовать пока не понимаю.


RTFS: DBCtrls.pas, FocusControl


Александр_2012   (2013-02-04 17:32:00) [42]


> procedure TForm1.DBEdit1Change(Sender: TObject);
> begin
>  with TDBEdit(Sender) do
>    if Field.AsInteger in [6..16]
>      then Color:= clRed
>      else Color:= clWindow;
> end;
>


Ммм. Я, наверное, не понял кода. Или не поняли меня. Проверка на допустимость диапазонов значений для каждого поля БД у меня есть и работает. Есть также проверка, реализуемая SQL-запросами, о допустимых значениях одного поля, если другое приняло определённое значение. Реализовывать в виде фильтров это сложно или вообще невозможно, т.к. зависимости реально могут быть и между двумя и трем и более полями БД.
Мне нужно программным путём найти компонент (или компоненты) типа DBEdit, к которому (или к к которым) привязано поле БД, заполненное неправильно. Мне кажется, что здесь скорее подходит что-то типа FindComponent, но как это реализовать пока не понимаю.


Игорь Шевченко   (2013-02-04 17:25:00) [43]


> Разве DataSet об этом знает?


TField.FocusControl ?


Плохиш   (2013-02-04 17:20:00) [44]

TDBEdit.Field - поле в запросе к которому подключён элемент редактирования.
TDBEdit.DataSource - источник данных для элемента редактирования.


sniknik   (2013-02-04 17:17:00) [45]

procedure TForm1.DBEdit1Change(Sender: TObject);
begin
 with TDBEdit(Sender) do
   if Field.AsInteger in [6..16]
     then Color:= clRed
     else Color:= clWindow;
end;


Александр_2012   (2013-02-04 17:01:00) [46]


> Inovet ©   (04.02.13 16:55) [3]
>
> Проверка на уровне ДатаСет? В нём можно посмотреть, что
> там подключено к полям для редактирования.

Не понял. Например, у меня поле TOVAR связано с компонентом DBEdit25. Я получаю информацию, что ошибочно заполнено поле TOVAR, значит мне надо найти на какой странице находится DBEdit25 и подсветить его. Разве DataSet об этом знает?


Inovet   (2013-02-04 16:55:00) [47]

Проверка на уровне ДатаСет? В нём можно посмотреть, что там подключено к полям для редактирования.


Александр_2012   (2013-02-04 16:46:00) [48]

В БД есть таблица, состоящая из двух полей: в одном SQL-запрос, которым проверяется логика заполнения, в другом сообщение, которое будет выдано в случае ошибки. Проблема в том, что компонентов DBEdit много и они просто пронумерованы в соответствии с принятой формой отчетности. Поэтому оператор получив сообщение типа "данный товар не может иметь указанный артикул" вынужден брать бумажный вариант формы и искать какому полям (DBEdit) соответствует данное сообщение, что неудобно. У меня по двойному щелчку по строке сообщения в Memo в StringList из SQL-запроса (см. выше) прописываются имена всех проверяемых полей в данном запросе. Т.е. имена полей где допущены ошибки заполнения у меня уже есть. Надо найти и подсветить компоненты DBEdit, которые связаны с данными полями.


Cobalt   (2013-02-04 16:32:00) [49]

TMemo.SelText тебе в руки
или SelStart


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо