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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.09.2010, 15:02   #1
Aleksey1989
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 127
По умолчанию StringGrid

Здравствуйте. Объясните мне пожалуйста, чем отличается свойство gdSelected от gdFocused в StringGrid? Ведь когда щёлкаешь по ячейке, то она сразу же получает фокус.
Aleksey1989 вне форума Ответить с цитированием
Старый 27.09.2010, 15:12   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Извиняюсь а где ты нашел эти свойства?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.09.2010, 15:25   #3
Aleksey1989
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 127
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Извиняюсь а где ты нашел эти свойства?
Код:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
Щёлкая ctrl+TGridDrawState можно увидеть данные свойства.
Код:
 TGridDrawState = set of (gdSelected, gdFocused, gdFixed);
Aleksey1989 вне форума Ответить с цитированием
Старый 27.09.2010, 15:45   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А-а-а. Насколько я помню состояние gdFocused всплывает не просто при выделении ячейки а именно при выделении на редактирование
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.09.2010, 15:49   #5
Aleksey1989
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 127
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А-а-а. Насколько я помню состояние gdFocused всплывает не просто при выделении ячейки а именно при выделении на редактирование
Тогда почему в следующем коде при щелчке на ячейке maskedit становится видной?

Код:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
 DateEdit.Visible := false;
 if (gdFocused in State) then
  begin
   if ACol=1 then
    begin
     DateEdit.Text:=StringGrid1.Cells[ACol, ARow];
     DateEdit.Left := Rect.Left + StringGrid1.Left+2;
     DateEdit.Top := Rect.Top + StringGrid1.top+2;
     DateEdit.Width := Rect.Right - Rect.Left;
     DateEdit.Height := Rect.Bottom - Rect.Top;
     DateEdit.Visible := True;
     exit;
   end;
  end;
Aleksey1989 вне форума Ответить с цитированием
Старый 27.09.2010, 16:31   #6
XeruH
Форумчанин
 
Регистрация: 17.09.2010
Сообщений: 229
По умолчанию

А в справке посмотреть нельзя?

type TGridDrawState = set of (gdSelected, gdFocused, gdFixed);

Description

TGridDrawState represents state information about the cell of a grid that is being rendered. It is a set that includes 0 or more of the following:

Value Meaning
gdSelected The cell is currently selected.
gdFocused The cell has input focus.
gdFixed The cell is in the fixed region of the grid.
Правильно заданный вопрос - половина ответа!
XeruH вне форума Ответить с цитированием
Старый 27.09.2010, 16:46   #7
Aleksey1989
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 127
По умолчанию

Цитата:
Сообщение от XeruH Посмотреть сообщение
А в справке посмотреть нельзя?

type TGridDrawState = set of (gdSelected, gdFocused, gdFixed);

Description

TGridDrawState represents state information about the cell of a grid that is being rendered. It is a set that includes 0 or more of the following:

Value Meaning
gdSelected The cell is currently selected.
gdFocused The cell has input focus.
gdFixed The cell is in the fixed region of the grid.
Ну и чем же отличается gdSelected от gdFocused? Когда выделяешь ячейку (gdSelected) она сразу же получает фокус (gdFocused). Так что справка тут вряд ли поможет или я не прав?
Aleksey1989 вне форума Ответить с цитированием
Старый 17.05.2016, 10:53   #8
governor
Новичок
Джуниор
 
Регистрация: 27.01.2015
Сообщений: 2
По умолчанию

Спасибо большое, эта тема мне очень помогла!

Я раскрашивал строки в DBGride в светлые цвета при помощи

if not ( gdFocused in State ) then ...

При этом окрашивалась цветом выделения (синим) только 1-я ячейка выделенной строки. А если я ставил RowSelection = true, то цвет всех ячеек строки инвертировался (становился белым), а фон продолжал окрашиваться в светлые цвета и выделенная строка почти исчезала.

Когда я заменил конструкцию на

if not ( gdSelected in State ) then ...

Всё сразу стало нормально. Выделенная строка приняла свой надлежащий вид при RowSelection = True.
governor вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
StringGrid Witaliy Общие вопросы Delphi 4 05.04.2012 11:57
stringgrid Johny91 Помощь студентам 3 26.12.2009 21:01
StringGrid[..]..... zotox Помощь студентам 3 24.07.2009 10:49
StringGrid Dimon88 Компоненты Delphi 15 14.02.2008 11:44