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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> В компонент StringGrid добавить св-во LinesPerRow, для изменения высоты строки по тексту 
:(
    Опции темы
hankblack
Дата 25.4.2009, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



здравствуйте
имеется задача, нужна помощь в ее решении: в компонент stringgrid дабавить свойство LinesPerRow, установка значений которого соответственно изменяет высоту строки.
нашел похожую задачу но она для DBGrid, а нужно для Стринг Грид.
не могу на ее основе переделать под себя :(  прошу помощи.

Код

unit Dbmygrid;

interface

uses

  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  Forms, Dialogs, DB, DBTables, StdCtrls, ExtCtrls, Grids, DBGrids;

type

  TMultiLineDBGrid = class(TDBGrid)
  private
    FLinesPerRow: Integer;
    procedure DrawDataCell(Sender: TObject; const Rect: TRect; Field: TField;
      State: TGridDrawState);
    procedure LayoutChanged; override;
    procedure SetLinesPerRow(ALinesPerRow: Integer);
  public
    property LinesPerRow: Integer read FLinesPerRow write SetLinesPerRow default
      1;
    constructor Create(AOwner: TComponent); override;
  end;

implementation

constructor TMultiLineDBGrid.Create(AOwner: TComponent);
begin

  inherited Create(AOwner);
  FLinesPerRow := 1;
  OnDrawDataCell := DrawDataCell;
end;

procedure TMultiLineDBGrid.LayOutChanged;
begin

  inherited LayOutChanged;
  DefaultRowHeight := DefaultRowHeight * LinesPerRow;
end;

procedure TMultiLineDBGrid.DrawDataCell(Sender: TObject; const Rect: TRect;
  Field: TField; State: TGridDrawState);
var

  Format: Word;
  C: array[0..255] of Char;
begin

  if LinesPerRow = 1 then
    Format := DT_SINGLELINE or DT_LEFT
  else
    Format := DT_LEFT or DT_WORDBREAK;

  Canvas.FillRect(Rect);

  StrPCopy(C, Field.AsString);
  WinProcs.DrawText(Canvas.Handle, C, StrLen(C), Rect, Format);
end;

procedure TMultiLineDBGrid.SetLinesPerRow(ALinesPerRow: Integer);
begin

  if ALinesPerRow <> FLinesPerRow then
  begin
    FLinesPerRow := ALinesPerRow;
    LayoutChanged;
  end;
end;
end.


заранее блягодарю.
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.0440 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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