Форум: "Основная";
Текущий архив: 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