Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.11.04;
Скачать: [xml.tar.bz2];

Вниз

DrawGrid   Найти похожие ветки 

 
nickolayLI   (2002-10-24 01:18) [0]

Привет всем!

как можно сразу отобразить изменения в Гриде, а то пока окошко не сминимизируешь, изменения не обновятся :(

спасибо.


 
777   (2002-10-24 01:42) [1]

Refresh?


 
nickolayLI   (2002-10-24 01:59) [2]

не помогает :(


 
nickolayLI   (2002-10-24 06:54) [3]

Люди ткните куда хоть копать?
:(


 
nickolayLI   (2002-10-24 06:57) [4]

выдержка из кода
onDrawCell();
if ( ( aRow > 0 ) and (acol=0) ) then begin
if CountClient.Count > 0 then begin
Canvas.Brush.Color := clbtnFace;
Canvas.FillRect(Rect);
Canvas.TextOut(Rect.left + 32, rect.top + 2, "Hi");
end else begin
end;
end;
если клиентов больше 0 то по идее должно обновиться, а не обновляется :(, сли формы чем-нить не перекрыть (какой нить другой задачкой, ли просто с минимизировать, а потом опять восстановить) :(


 
Separator   (2002-10-24 07:06) [5]

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
if ( ( ARow > 0 ) and (ACol=0) ) then
with StringGrid1 do
begin
Canvas.Brush.Color := clbtnFace;
Canvas.FillRect(Rect);
Canvas.TextOut(Rect.left, rect.top, "Hi")
end
end;


 
nickolayLI   (2002-10-24 07:48) [6]

ну так же и делается просто я забыл написать StringGrid1, и должно выполнится условие CountClient.Count > 0.


 
Separator   (2002-10-24 07:56) [7]

При каком условии не обновляется? У меня все нормально получается


 
nickolayLI   (2002-10-24 08:18) [8]

так у меня тоже работает, а вот так вот
if CountClient.Count > 0 then begin
^^^^^^^^^^^^^^^^^^^^^^^^^^
Canvas.Brush.Color := clbtnFace;
Canvas.FillRect(Rect);
Canvas.TextOut(Rect.left + 32, rect.top + 2, "Hi");
end else begin
Canvas.TextOut(Rect.left + 32, rect.top + 2, "Hi");
end;
вот с таким условием не работает, перерисовка сразу не идет, а отрисовавывается когда форму перекроешь и потом опять активной сделаешь


 
Separator   (2002-10-24 08:27) [9]

А откуда берется CountClient


 
nickolayLI   (2002-10-24 08:29) [10]

это СтрингЛист, он заполняется, когда к серверу кто-нить подключился... при ServerSocket1Accept();


 
Separator   (2002-10-24 08:37) [11]

ну так все должно работать, попробуй Repaint или у формы Update


 
nickolayLI   (2002-10-24 08:39) [12]

дык не обновляется :((


 
Separator   (2002-10-24 08:43) [13]

Поробуй создавать Grid вручную, т.е. сделай от него наследника и перепиши DrawCell процедуру.


 
nickolayLI   (2002-10-24 08:52) [14]

всмысле компоненту новую? :)


 
nickolayLI   (2002-10-24 09:05) [15]

ну сделал всеравно таже фигня :(


 
Ученик   (2002-10-24 09:13) [16]

DrawGrid1.Invalidate


 
nickolayLI   (2002-10-24 09:18) [17]

Млин... Где ты раньше был, был бы ты сейчас здесь расцеловал бы :))


 
ЮЮ   (2002-10-24 09:23) [18]

Grid.Invalidate
В том месте, где меняешь CountClient.Count. Иначе откуда Гриду знать, что надо перерисоваться :-)


 
nickolayLI   (2002-10-24 09:38) [19]

хм... всеравно че-то не то :(


 
Song   (2002-10-24 09:38) [20]

Я всегда пользовался RePaint"ом. RePaint=Update+Invalidate


 
nickolayLI   (2002-10-24 09:44) [21]

где ты его вставлял?


 
Song   (2002-10-24 09:54) [22]

после изменения содержимого ячейки при условии что есть обработчик onDraw*


 
nickolayLI   (2002-10-24 10:03) [23]

OnDrawCell?


 
han_malign   (2002-10-24 10:14) [24]

Кстати, если перекрывать DrawGrid, то есть еще
protected
procedure InvalidateCell(ACol, ARow: Longint);
procedure InvalidateCol(ACol: Longint);
procedure InvalidateRow(ARow: Longint);
- если меняется содержимое одной ячейки(столбца, колонки)- то перерисовка быстрее


 
nickolayLI   (2002-10-24 10:21) [25]

после изменения ClientCount = 0, делаю Repaint,
то из грида вообще всё исчизает :(


 
ЮЮ   (2002-10-24 10:29) [26]

А что же там должно оставаться, если в onDrawCell
if CountClient.Count > 0 then begin


 
nickolayLI   (2002-10-24 10:55) [27]

бррр... вообще че-то я запутался.
как короче можно изменить ячейку например номер 5 по Row
но так что бы она могла отоброжать сначало одно значение, после изменений другое...
я тут уже совсем запутался :(


 
Song   (2002-10-24 11:08) [28]

Вы сначала определитесь какой грид Вам нужен, потому что начиналось всё с TDBGrid, а закончилось событием onDrawCell, которого у TDBGrid нет.


 
nickolayLI   (2002-10-24 11:11) [29]

:), Вы что, начиналось всё с DrawGrid, тема сообщения-то какая?


 
Song   (2002-10-24 11:35) [30]

Sorry, я глюканул.

Вам нужно сделать обработчик TDrawGrid.onDrawCell
после того как измените ячейку: Cells[4,1]:="1" например, делайте RePaint. Последний заставит перерисовать компонент, из-за чего вызвовется TDrawGrid.onDrawCell


 
ЮЮ   (2002-10-24 12:09) [31]

Song © (24.10.02 11:35)
Снова глюканул :-) Cells - это у StrigGrid-а

У тебя есть стринглист CountClient который надо рисовать в DrawGride. При изменении CountClient.Count уставливаешь соответствующее DrawGrid.RowCount, а в обработчике

onDrawCell();

Canvas.TextOut(Rect.left + 32, rect.top + 2, CountClient[ARow]);

Или вместо DrawGrid + StringList chfpe bcgjkmpjdfnm StringGrid


 
dolmat   (2002-10-24 13:07) [32]

Grid вего лиль отображает попробуй обновлять то, откуда данные
table.refresh


 
Song   (2002-10-24 13:18) [33]

:-)
Ну вас в баню :-)


 
nickolayLI   (2002-10-24 14:16) [34]

>dolmat
Причем здесь table.*!!!


 
nickolayLI   (2002-10-24 14:47) [35]

>Song © (24.10.02 11:35)
ага, а как я в этот грд запихну иконочки?


 
Song   (2002-10-24 15:15) [36]

TDrawGrid.onDrawCell


 
Maximal   (2002-10-24 16:39) [37]

В тему о DrawGrid"e.
B каждую ячейку вводится по клику картинка. Но как только данный DrawGrid закрывается другим окном, то все картинки стираются. Как сделать так, чтобы после этого все картинки заново пересовались? (В цикле заново через OnDrawCell перерисовать не получается, Refresh тоже не работает и т.д...)


 
nickolayLI   (2002-10-25 08:24) [38]

Invalidate попробуй
или repaint
Хотя repaint это invalidate and Update в одном флаконе


 
nickolayLI   (2002-10-25 08:38) [39]

>Song © (24.10.02 15:15)
угу, это то я делаю, но фичка в том, что мне нужно на конкретной ячейке поменять значок после некоторого изменения, допустим до изменения была одна иконка после изменения чтобы именно в этой ячейке стала другая иконка, делается, но получается, что перерисовка идет всех ячеек, т.е. всех иконок в гриде/ячейках, а надо на конкретной ячейке. :(

Пока.


 
ЮЮ   (2002-10-25 08:45) [40]

>B каждую ячейку вводится по клику картинка
Что значит вводится в ячейку? У DrawGrida нет никаких ячеек. Всё, что он показывает в ячейках должно рисоваться непосредственно в обработчике onDrawCell (потому он DrawGrid и называется).
Поэтому по клику по DrawGrid-y надо вносить изменения в какой либо другой объект и делать DrawGrid.Invalidate. А при перерисовке использовать измененное значение.



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

Форум: "Основная";
Текущий архив: 2002.11.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.01 c
14-11411
me2
2002-10-14 14:15
2002.11.04
Где взять оболочку (IDE) для FreePascal?


14-11386
Dmitriy Polskoy
2002-10-17 09:25
2002.11.04
Операция


3-11087
Karbo
2002-10-15 20:35
2002.11.04
Можно ли работать с базой как с типизированным файлом ?


1-11137
acorus
2002-10-22 18:29
2002.11.04
Мастера выручайте! - как побороть access violation Delphi 5/6


1-11188
Weare
2002-10-24 14:34
2002.11.04
Как распечатать *.jpg файл





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский