![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ну слишком медленный StringGrid. Что делать? [D7]
DmitrichJ © (2007-01-17 05:07:00)Вопрос в том, что вывожу данные в StringGrid. При около 100 записей это дело слишком затягивается. Делаю так:
form1.IBQuery1.First;
while not form1.IBQuery1.Eof do begin
count:=count+1;
StringGrid1.RowCount:=count+1;
StringGrid1.Cells[0,count]:=Form1.IBQuery1.FieldByName('npfiz').AsString;
StringGrid1.Cells[1,count]:=Form1.IBQuery1.FieldByName('fizfamil').AsString+' '+
Form1.IBQuery1.FieldByName('fizname').AsString+' '+
Form1.IBQuery1.FieldByName('fizotch').AsString;
end;
Примерно так.
Подскажите как выводить данные лучше? Или каки компонентом воспользоваться, кроме DBGrid.
Спасибо.
evvcom (2007-01-18 08:42:00) [1]> [33] ЮЮ © (18.01.07 03:19)
А... Да, да... Кажется все ж использовал. Давно. Склероз, видимо, начинает проявляться. :)
ЮЮ (2007-01-18 03:19:00) [2]
> Я такого свойства тоже не помнил.(Query1.DataSource) Сейчас почитал. Никогда не использовал. ИМХО, ненужное свойство, может даже вредное, в чем мы только что и убедились.
>
:) Это для организвции Master-Details связи двух DataSet-ов. Вешь вполне необходимая и полезная
DmitrichJ (2007-01-17 22:51:00) [3]Если кому интересно: сделл замеры времени. Всё дело оказалось в IBQuery.next. Т.е. в переходе к следющей записи. А StringGrid выдерживает хорошее время даже на 4000 строчек. Буду думать что делать.
Fredy314 (2007-01-17 15:39:00) [4]> [30] evvcom © (17.01.07 15:17)
Если чтото нужно сделать, пользуемся таким алгоритмом:
1. Методом тыка, вдруг получится.
2. Спросить на форуме.
3. Поискать на Яндексе.
4. Прочесть наконец хелп.
шутка.
зы. а хелп я читаю, и книжки тоже, и поиском пользоватся умею. Но всякое бывает.
evvcom (2007-01-17 15:17:00) [5]> [29] Fredy314 © (17.01.07 15:06)
Ты бы хоть хелп почитал. Я такого свойства тоже не помнил. Сейчас почитал. Никогда не использовал. ИМХО, ненужное свойство, может даже вредное, в чем мы только что и убедились.
Fredy314 (2007-01-17 15:06:00) [6]Извиняюсь у всех, всё работает, я просто TDataSource и TQuery лишний раз соединил
Query1.DataSource присвоил DataSource1 и как результат
DataSource1.DataSet не хотел принимать Query1, вот ведь как бывает.
Elen (2007-01-17 14:53:00) [7]
> TDataSource+ТDBGrid+TТable
Разве так? путь такой :
TDbGrid.DataSource:=TDataSource; TDataSource.DataSet:=Ttable (или TQuery)
Так ведь?
stone (2007-01-17 14:52:00) [8]
> TDataSource+ТDBGrid+TQuery не хочет.
Это что за связка такая? ты последовательность не перепутал?
ТDBGrid -> TDataSource -> TQuery
Fredy314 (2007-01-17 14:47:00) [9]D7 так-же связка TDataSource+ТDBGrid+TТable нормально работает, а вот
TDataSource+ТDBGrid+TQuery не хочет.
Elen (2007-01-17 14:44:00) [10]
> Пробовала? я какраз про ето и говорю TDataSource принимает
> TTable и промто не видит TQuery
Хм. Незнаю как в D7, а у меня в D6 это только через TDataSource. DBGrid Ttable так просто без посредника DataSource не подключается.
Fredy314 (2007-01-17 14:39:00) [11][19]ту3.14шьБывает
Fredy314 (2007-01-17 14:37:00) [12]> [22] Elen © (17.01.07 14:30)
Пробовала? я какраз про ето и говорю TDataSource принимает TTable и промто не видит TQuery
Можно конечно и TTable использовать свойствa Filter и Filtered Но как быть к запросам к нескольким таблицам?
Elen (2007-01-17 14:30:00) [13]
> DataSource не принимает ТQuery в качестве ДатаСета
DataSource это в Гриде. Он принимает TDataSource, который принимает в свой DataSet тот самый TQuery
Думкин (2007-01-17 14:26:00) [14]> Fredy314 © (17.01.07 14:20) [20]
DataSource не принимает ТQuery в качестве ДатаСета
А как не принимает?
Fredy314 (2007-01-17 14:20:00) [15]> [19] Думкин © (17.01.07 14:17)
Ето именно те самые три цыфры.
Но как отобразить результат ТQuery в DBGrid я не понял. Ткните пальцем пожалуйста.
Думкин (2007-01-17 14:17:00) [16]> Fredy314 © (17.01.07 14:14) [18]
Извини, но три цифры в твоем нике, это не начало тизвестного слова? Ничего личного, но это таки опять 3.14...шь.
Fredy314 (2007-01-17 14:14:00) [17]И как соединить ТQuery с DBGrid если DataSource не принимает ТQuery в качестве ДатаСета
Fredy314 (2007-01-17 13:52:00) [18]Возможно и так. Лёгких путей не ищем.
Чтото вне в нём не понравилось, не помню уже.
Amoeba (2007-01-17 13:43:00) [19]
> потому что ненашёл в DBGrid-е OnDrawCell мне нужно поразному
> отрисовырать разные данные(Раравнивание по запятой например).
>
>
Плохо искал, и в результате пришлось удалять гланды через анус.
Думкин (2007-01-17 13:30:00) [20]
> что ненашёл в DBGrid-е OnDrawCell мне нужно поразному отрисовырать
> разные данные(Раравнивание по запятой например).
??
В Ф1 даже пример есть:
he following example conditionally changes the font color of rows in a DB Grid. The following code is added to the DB Grid’s OnDrawDataCell event. If the field Size is greater than 10, the row’s font will be red.
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState);
begin
if Table1.FieldByName('Size').AsFloat > 10 then
DBGrid1.Canvas.Font.Color := clRed;
DBGrid1.DefaultDrawDataCell(Rect, Field, State);
end;