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

Вниз

Как сделать sql запрос к нескольким таблицам (ADO,MS Access)?   Найти похожие ветки 

 
gedevan   (2016-01-28 13:02) [40]

я понял он вылетает в Column.Field.Text этом месте когда Column.FieldName = "FourSearch", Т.е. туда должно было быть помещено значение помноженное на -1 или свичем полученное


 
gedevan   (2016-01-28 13:05) [41]

т.к. Column.Field = nil тогда (


 
sniknik ©   (2016-01-28 13:06) [42]

> ошибка аксес виолейшн.
пятая дельфя и adoquery используешь?
http://www.delphisources.ru/pages/faq/base/ado_acc_viol_err.html


 
sniknik ©   (2016-01-28 13:10) [43]

> т.к. Column.Field = nil тогда (
как у булена с дефзначением вдруг значение nil???
+
AsBoolean должно преобразовывать в фалсе.


 
gedevan   (2016-01-28 13:28) [44]

Делфи xe5 AdoDataSet использую.

В общем я сделал перерисовывание в ДБГриде. Но есть одна беда. Переодически после очередного запроса DBGrid начинает непрерывно и без остановки вызывать функцию (запрос при этом не вызывается вновь, т.е. оно "само")

procedure TTv.TVTableLogDrawColumnCell(Sender: TObject; const Rect: TRect;
 DataCol: integer; Column: TColumn; State: TGridDrawState);
var
 t: string;
begin
 if ADODataSet1.FieldByName("tempfound").Value = true then
   Font.Color := clGreen
 else if ADODataSet1.FieldByName("tempfound").Value = false then
   Font.Color := clred;

   if (Column.FieldName = "Expr1000") or (Column.FieldName = "Name") or
     (Column.FieldName = "ItemName") then
   begin
     with TVTableLog.Canvas do
     begin
       Brush.Color := clwhite;
       if Column.Field <> nil then
       begin
         FillRect(Rect);
         TextOut(Rect.Left + 2, Rect.Top + 2, Column.Field.Text);
       end;
     end;
   end
   else
   begin
     with TVTableLog.Canvas do
     begin
       Brush.Color := clwhite;
       if Column.Field <> nil then
       begin
         t := Column.Field.Text;
         if (Column.FieldName = "FourSearch") or
           (Column.FieldName = "SearchFixed") or
           (Column.FieldName = "anotherTime") then
         begin
           if t = "-1" then
             t := "True"
           else if t = "0" then
             t := "False";
         end;

         FillRect(Rect);
         TextOut(Rect.Right - 2 - TextWidth(t), Rect.Top + 2, t);
       end;

     end;

   end;

end;


из за этого все мигает и криво перерисовывается. В принципе если вот это решить то тогда с остальным можно не мучиться.


 
gedevan   (2016-01-28 13:43) [45]

глюк случается если в одной колонке в разных ячейках выполняются оба этих условия(т.е. есть и tempfound = true и tempfound = false в колонке):

if ADODataSet1.FieldByName("tempfound").Value = true then
   Font.Color := clGreen;
 //else if ADODataSet1.FieldByName("tempfound").Value = false then
 //  Font.Color := clred;


и вот если например, второе закомментировать, то глюка нет. А как тогда раскрасить в разные цвета? (


 
gedevan   (2016-01-29 08:46) [46]

разобрался TVTableLog.Canvas.Font.Color := clGreen; нужно писать



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

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

Наверх




Память: 0.54 MB
Время: 0.009 c
2-1452956336
vegarulez
2016-01-16 17:58
2017.12.24
FastMM need help.


2-1452769577
testeruser
2016-01-14 14:06
2017.12.24
Thread


2-1453717107
Andrey K
2016-01-25 13:18
2017.12.24
Как активировать устройство подсоеденёное через роутер.


15-1467989201
Kilkennycat
2016-07-08 17:46
2017.12.24
Что лучше, C# или Delphi


2-1452253920
gedevan
2016-01-08 14:52
2017.12.24
Как сделать sql запрос к нескольким таблицам (ADO,MS Access)?