Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Несколько вопросов по StringGrid 
V
    Опции темы
MotoArhangel
Дата 20.4.2011, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 13.3.2011

Репутация: нет
Всего: нет



У меня возникло несколько вопросов по работе с компонентом StringGrid:
1. Как можно убрать не очень то красивое явление,пустоту с правой стороны? 
 user posted image
2. Можно ли присвоить определенной строке  свойство enabled:=false? Если да, то как?
 user posted image
3.Можно ли сделать точки как в лист виев? Если да, то как?
 user posted image




Это сообщение отредактировал(а) MotoArhangel - 21.4.2011, 06:55
PM MAIL   Вверх
~FoX~
Дата 21.4.2011, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



1. Например изменить ширину столбца во время ресайза формы:
Код

procedure TForm1.FormResize(Sender: TObject);
begin
  StringGrid1.ColWidths[0] := StringGrid1.Width - 10;
end;


2. Я добавил еще один столбик по которому определяется включена ли ячейка... Если 1, то к ней нельзя будет обратится
Код

procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
  var CanSelect: Boolean);
begin
  if (Sender as TStringGrid).Cells[1, ARow] = '1' then begin
    ShowMessage('Ни включенная ячейка!!!');
    CanSelect := false;
  end;
end;

А вот так я подкрасил текст неактивной ячейки
Код

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  if (Sender as TStringGrid).Cells[1, ARow] = '1' then begin
    (Sender as TStringGrid).Canvas.Font.Color := ClRed;
    (Sender as TStringGrid).Canvas.TextOut(Rect.Left + 2, Rect.Top + 2,
                                  (Sender as TStringGrid).Cells[ACol, ARow]);
  end;  //if


3. Можно, для этого используем DrawText
Код

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  TempRect : TRect;
begin
  TempRect := Rect;
  TempRect.Left := TempRect.Left +2;   //Рект передаваемый процедурой счтиаеться
  TempRect.Top := TempRect.Top +2;    // с отступом от края ячейки
  DrawText((Sender as TStringGrid).Canvas.Handle,
           (Sender as TStringGrid).Cells[ACol, ARow],
           Length((Sender as TStringGrid).Cells[ACol, ARow]),
           TempRect, DT_END_ELLIPSIS);
end;

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

На всякий случай полный код
Код

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  TempRect: TRect;
begin
  if (Sender as TStringGrid).Cells[1, ARow] = '1' then begin
    (Sender as TStringGrid).Canvas.Font.Color := ClRed;
    (Sender as TStringGrid).Canvas.TextOut(Rect.Left + 2, Rect.Top + 2,
                                  (Sender as TStringGrid).Cells[ACol, ARow]);
  end;  //if
  TempRect := Rect;
  TempRect.Left := TempRect.Left +2;   //Рект передаваемый процедурой счтиаеться
  TempRect.Top := TempRect.Top +2;    // с отступом от края ячейки
  DrawText((Sender as TStringGrid).Canvas.Handle,
           (Sender as TStringGrid).Cells[ACol, ARow],
           Length((Sender as TStringGrid).Cells[ACol, ARow]),
           TempRect, DT_END_ELLIPSIS);
end;


См. аттач...

З.Ы.: ОДИН ТОПИК - ОДИН ВОПРОС!  smile  smile 

Это сообщение отредактировал(а) ~FoX~ - 21.4.2011, 10:16

Присоединённый файл ( Кол-во скачиваний: 26 )
Присоединённый файл  StringGrid.jpg 18,21 Kb


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
MotoArhangel
Дата 21.4.2011, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 13.3.2011

Репутация: нет
Всего: нет



Спасибо в следующий раз учту.
Насчет второго вопроса в мыслях что то подобное и было)
По первому вопросу: дело в том что форма не имеет возможности изменять свой размер. Может быть как нибудь жестко привязать размер каждой колонки?

Это сообщение отредактировал(а) MotoArhangel - 21.4.2011, 12:49
PM MAIL   Вверх
~FoX~
Дата 21.4.2011, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



Цитата(MotoArhangel @  21.4.2011,  12:46 Найти цитируемый пост)
 Может быть как нибудь жестко привязать размер каждой колонки?

Ну так посчитай и установи им размеры в дизайн тайме или, что более правильнее, по онШоу формы... Ну и goRowSizing := false;
Или еще проще, ширина последнего столбца := ширине грида ))))

Это сообщение отредактировал(а) ~FoX~ - 21.4.2011, 17:38


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
mardoc
Дата 27.4.2011, 07:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 24.2.2011

Репутация: нет
Всего: нет



Ах как не хватает события на goRowSizing!.  smile 

PM MAIL   Вверх
northener
Дата 27.4.2011, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 8
Всего: 20



Цитата(~FoX~ @  21.4.2011,  17:33 Найти цитируемый пост)
Ну и goRowSizing := false;


Цитата(mardoc @  27.4.2011,  07:54 Найти цитируемый пост)
Ах как не хватает события на goRowSizing!.


Хм. А причем тут goRowSizing?


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0729 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.