Главная страница
    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.005 c
15-1248544745
xayam
2009-07-25 21:59
2009.09.27
Подскажите каталог RSS-лент на определенную тему


2-1248380023
Евгений Р.
2009-07-24 00:13
2009.09.27
Как определить вид свойства по PPropInfo


15-1248773497
Someone
2009-07-28 13:31
2009.09.27
Как записать комманду в реестре, для передачи имени проге


1-1216800759
artkil
2008-07-23 12:12
2009.09.27
Unicode в Delphi через TntListBox


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