Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 07.08.2008, 12:48   #11
Банзай
Пользователь
 
Аватар для Банзай
 
Регистрация: 21.08.2007
Сообщений: 89
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Перерисуй ее, и не отрисовывай каемку.
в смысле?
если я делаю так
Код:
procedure TFormMain.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
DrawGrid1.Canvas.Pen.Color:=clwhite;
DrawGrid1.Canvas.brush.Color:=clwhite;
DrawGrid1.Canvas.Rectangle(Rect.Left-1,Rect.Top-1,Rect.Right+1,Rect.Bottom+1);
end;
то при выборе определенной ячейки вокруг неё все равно появляется эта каемка.

так что, есть вообще решение подобной ситуации?

наследованием пэинт компонента менять? или как ево, полиморфизмом? (дал же бог фамилию...)
ну вот не хочеться во внутренности его лезть, да ещё и в субботу... может есть всетаки способ?
подписываюсь

Последний раз редактировалось Stilet; 21.08.2013 в 20:08.
Банзай вне форума
Старый 09.08.2008, 19:58   #12
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,239
Сообщение

Ничего ненадо усложнять, делается это через канву в событии DrawCell:
Код:
procedure TForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
 With TDrawGrid(Sender) Do
 begin
  If (gdSelected in State)and(ACol=Col)And(ARow=Row) then
  begin
   Canvas.Brush.Color := clRed;
   Canvas.FillRect(Rect);
   Canvas.DrawFocusRect(Rect);
  end
   else
  If (gdSelected in State) then
  begin
   Canvas.Brush.Color := clRed;
   Canvas.FillRect(Rect);
   Canvas.DrawFocusRect(Rect);
   Canvas.DrawFocusRect(Rect);
  end;
 end;
end;
Alter вне форума
Старый 10.08.2008, 10:44   #13
Банзай
Пользователь
 
Аватар для Банзай
 
Регистрация: 21.08.2007
Сообщений: 89
По умолчанию

Немножко не понятно, почему оно так, но все равно, лед тронулся! Спасибо
подписываюсь
Банзай вне форума
Старый 12.09.2008, 12:32   #14
ГЫнок
 
Регистрация: 17.08.2008
Сообщений: 9
По умолчанию

Я аналогичным способом закрашивал ячейки в StringGrid и возникла маленькая проблемка, закрашивается текст тоже, как с этим справится??? Зарание спасибо...
ГЫнок вне форума
Старый 12.09.2008, 21:24   #15
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,281
По умолчанию

После отрисовки прямоугольника необходимо воспользоваться TextOut
Код:
StringGrid1.Canvas.TextOut (Rect.Left+2, Rect.Top+2, StringGrid1.Cells [ACol, ARow]);
Sibedir вне форума
Старый 30.03.2009, 19:27   #16
onizukawise
 
Регистрация: 30.03.2009
Сообщений: 4
По умолчанию

Всем привет! Я плохо программирую и не могу найти встроенный русский хелп для делфи и билдера (там ещё есть delphi и builder примеры для разных комманд, но только builder показывается..)...

Надо из билдера в дельфи код переделать, вот эти 3 места не знаю как записать на дельфи, помогите, пожалуйста)


if (State.Contains(gdFocused))
DrawGrid1->Canvas->DrawFocusRect(Rect);



DrawGrid1->OnDrawCell;
DrawGrid1->Repaint();


if (array[X][Y]==2&&(ProvLife(X,Y)<2||ProvLife(X,Y )>3)) /
array[X][Y]=3;
if (array[X][Y]==0&&ProvLife(X,Y)==3)
array[X][Y]=1;
onizukawise вне форума
Старый 30.03.2009, 20:31   #17
onizukawise
 
Регистрация: 30.03.2009
Сообщений: 4
По умолчанию

уточню, что это
-> замените на . (точку).
== на =
= на :=
&& на AND
|| на OR
я знаю, проблема в другом...



if (State.Contains(gdFocused)) // как это в дельфи написать?
DrawGrid1->Canvas->DrawFocusRect(Rect);

Drawgrid.OndrawCell; - без параметров?
DrawGrid1.Repaint(); - почему тут пустые скобки?..

if (array[X][Y]==2&&(ProvLife(X,Y)<2||ProvLife(X,Y )>3)) /
array[X][Y]=3;
if (array[X][Y]==0&&ProvLife(X,Y)==3)
array[X][Y]=1;

if (arr[X,Y]=2) and ((ProvLife(X,Y)<2) or (ProvLife(X,Y)>3)) then arr[X,Y]:=3;
if (arr[X,Y]=0) and (ProvLife(X,Y)=3) then arr[X,Y]:=1;

- ругается incompatible types
onizukawise вне форума
Старый 21.08.2013, 19:35   #18
vova797
 
Регистрация: 13.08.2013
Сообщений: 4
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
Закраска выделенной ячейки красным цветом
DrawGrid1.canvas.Brush.Color := clRed;
DrawGrid1.canvas.FillRect(DrawGrid1 .CellRect(DrawGrid1.Col,DrawGrid1.R ow));
ЗЫ. только потом она перекрасится назад, когда произойдет перерисовка ячейки. чтобы этого не было, обрабатываешь OnDrawCell и там пишешь закраску. например, этот код тоже закрашивает выделенную ячейку:
if (Acol = drawGrid1.Col)and(Arow = drawgrid1.row)then
begin
DrawGrid1.canvas.Brush.Color := clRed;
DrawGrid1.canvas.FillRect(Rect));
end;
Ну вы ведь закрасили "выделенную" ячейку насколько я понял, а просили ведь "нужную"
vova797 вне форума
Старый 21.08.2013, 20:10   #19
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Одна тема - Один автор.
Создавай свою.
I'm learning to live...
Stilet вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Типа DrawGrid SERG1980 Компоненты Delphi 14 29.07.2008 17:36
разноцветный WinProcs.DrawText lis_abu Общие вопросы Delphi 10 24.10.2007 14:42
В Memo сделать так, чтобы текст был разного цвета, разноцветный memo Artem Компоненты Delphi 3 07.09.2007 13:40