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

Вниз

рисовать в ondrawcell   Найти похожие ветки 

 
bag   (2009-07-21 12:40) [0]

можно ли так рисовать на на гриде? моргает переодически :( что сильно раздражает, может есть другие варианты?
в ondrawcell
 Canvas.Pen.Color := clblack;
 Canvas.Pen.Width := 3;

 Canvas.MoveTo((ColCount - 30) * DefaultColWidth + ColCount - 31, 0);
 Canvas.LineTo((ColCount - 30) * DefaultColWidth + ColCount - 31, Height);


 
bag   (2009-07-21 12:42) [1]

линии то рисуются, а данные в таблицы появляются не сразу а как бы загружаются и пользователь это видит :(


 
KilkennyCat ©   (2009-07-21 12:44) [2]

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


 
bag   (2009-07-21 12:53) [3]

закрасить всю ячейку научился, а как нарисовать там линию не пойму :(

и вот еще вопрос такой, если я нарисую на ячейке и все в данном столбце то промежутки между ячейками не закрасятся и будет линия одна пунктирная?


 
KilkennyCat ©   (2009-07-21 13:00) [4]

линии рисуются точно также. и закрашивается все нормально. просто внимательнее с координатами.


 
bag   (2009-07-21 13:04) [5]

так закрашиваю ячейки:
with SG6_1 do
begin
 Canvas.Brush.Color := $00ffdbbf;
 Rect := CellRect(ACol, ARow);
 S := Cells[ACol, ARow];

 if (ACol >= ColCount - 2) and (ARow >= 0) and (ARow <= RowCount) then
 begin
   Canvas.FillRect(Rect);
   Canvas.TextOut(rect.left + 3, rect.top + 2, S);
 end;
end;

как с линиями в упор не понимаю, прошу помощи!


 
KilkennyCat ©   (2009-07-21 13:07) [6]

мовету, лайнту... какая разница между выводом техта и рисованием линии?


 
KilkennyCat ©   (2009-07-21 13:08) [7]


> Rect := CellRect(ACol, ARow);

зачем это? ты на событие ondrawcell внимательно смотрел?


 
bag   (2009-07-21 13:24) [8]

спасибо, решение было на поверхности!


 
bag   (2009-07-21 14:22) [9]

Рисую следующим кодом линии в ячейках, все бы хорошо, но если выделить ячейку, а потом перейти к другому компоненту(скажем щелкнуть по кнопке), то в ячейке которую мы выделяли теряется текст(если снова щелкнуть по ней то текст в ней появляется)! Почему? как исправить? еще раздражает пунктирная рамка вокруг ячейки, может кто знает путь избавления от рамки?

procedure TfrmMain.SG6DrawCell(Sender: TObject; ACol, ARow: Integer;
 Rect: TRect; State: TGridDrawState);
var
 s: string;
 s_l: integer;
begin

 with SG6 do
 begin
   S := Cells[ACol, ARow];
   s_l := length(s);
   Canvas.Pen.Color := clblack;
   Canvas.Pen.Width := 1;
   Canvas.Brush.Color := clWhite;
   if (ACol >= 0)
     and (ARow = 0) then
   begin

     Canvas.FillRect(Rect);
     Canvas.MoveTo(Rect.Right, rect.Top);
     Canvas.LineTo(Rect.Right, Rect.Bottom + 1);
     if s_l = 1 then
       Canvas.TextOut(rect.left + (ColWidths[acol] div 2) - 3, rect.top + 3, S)
     else
       Canvas.TextOut(rect.left + (ColWidths[acol] div 2) - 6, rect.top + 3, S)
   end;

 end;
end;


 
bag   (2009-07-21 14:34) [10]

нашел ответ на свой вопрос
   if (gdSelected in State) then
   begin
     Canvas.Brush.Color := clWhite;
     Canvas.Font.Color := clBlack;
   end;

но от пунктирной рамки избавиться все равно не удается


 
Amoeba ©   (2009-07-21 15:29) [11]

DefaultDrawing в False установлено?


 
bag   (2009-07-21 15:53) [12]

при DefaultDrawing в False все остальные ячейки придется самому рисовать, хотя это не долго делается, но все же:)


 
Amoeba ©   (2009-07-21 17:12) [13]

Зато от пунктирной рамки избавишься.


 
KilkennyCat ©   (2009-07-21 17:18) [14]

от пуктирной рамки можно избавиться выполнив еще раз drawFocusRect


 
bag   (2009-07-21 19:04) [15]

KilkennyCat,я не понял, можете привести код?


 
KilkennyCat ©   (2009-07-21 20:43) [16]


> можете привести код?

еще раз? Легко.
TCanvas.DrawFocusRect(const rect : TRect);
поскольку рисование выполняется используя Xor, второй вызов уничтожает первый.



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

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

Наверх




Память: 0.48 MB
Время: 0.006 c
2-1248274425
dmitry_12_08_73
2009-07-22 18:53
2009.09.27
Загрузка клиентской области окна в TImage


1-1216360184
GraySE
2008-07-18 09:49
2009.09.27
WebBrowser - изменения на странице до её отображения


2-1248330602
JohnKorsh
2009-07-23 10:30
2009.09.27
Как средствами Dilphi создать точку восстановления?


1-1216619192
dreamse
2008-07-21 09:46
2009.09.27
непонятная работа кода :(


15-1248807077
FF_FF
2009-07-28 22:51
2009.09.27
Парсер





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский