Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.07.25;
Скачать: CL | DM;

Вниз

Как разрешить изменять текст в StringGrid и как получить Reсt   Найти похожие ветки 

 
Kolan ©   (2005-07-04 14:32) [0]

Здравствуйте,
 Сразу два вопроса:
   1: Как разрегшить пользователям менять содержимое ячеек. Не нашел...
   2: Я хотел бы подогнать надписи в я чейках под их ширину. Для этого у меня есть функция котороя подгоняет текст под определенный Rect.

function TMainForm.AdjustStringToRect(DC: HDC; S: string;
 Rect: TRect): string;
var
 P: PChar;
begin
 P := AllocMem(Length(S) + 1);
 StrCopy(P, PChar(S));
 Rect.BottomRight.X := Rect.BottomRight.X - 2;
 DrawText(DC, P, Length(s), Rect,
   DT_SINGLELINE or DT_CALCRECT or DT_LEFT or
   DT_MODIFYSTRING or DT_PATH_ELLIPSIS);
 Result := P;
 FreeMem(P);
end;


Как мне получить Rect каждой ячейки.


 
begin...end ©   (2005-07-04 14:39) [1]

> Kolan ©   (04.07.05 14:32)

> Как разрегшить пользователям менять содержимое ячеек.

TCustomGrid.Options + goEditing.

> Как мне получить Rect каждой ячейки.

TCustomGrid.CellRect.


 
Думкин ©   (2005-07-04 14:43) [2]

> P := AllocMem(Length(S) + 1);
>  StrCopy(P, PChar(S));
....
>  Result := P;
>  FreeMem(P);

?


 
begin...end ©   (2005-07-04 14:45) [3]

> Думкин ©   (04.07.05 14:43) [2]

Всё нормально. Кроме отсутствия try/finally и использования устаревших функций.


 
Думкин ©   (2005-07-04 14:49) [4]

> [3] begin...end ©   (04.07.05 14:45)

Да? Ну ладно. А резалт куда? И где подгонка текста - в упор не вижу?

Автору: посмотри для начала статью Паши Голубя про многострочный TStyringGrid.


 
begin...end ©   (2005-07-04 14:51) [5]

> Думкин ©   (04.07.05 14:49) [4]

> А резалт куда?

В строке
> Result := P
копируется не указатель, а тело строки.

> И где подгонка текста - в упор не вижу?

DT_CALCRECT ?


 
Kolan ©   (2005-07-04 14:54) [6]

Как до них добраться?
пробовал так

TFakeGrid=class(TCustomGrid);

var
 I: Integer;
 OptionsSet: TGridOptions;
...
 OptionsSet := TFakeGrid(ReportGrid).Options;
 Include(OptionsSet, goEditing);
 TFakeGrid(ReportGrid).Options := OptionsSet;


Это правильно.


 
Думкин ©   (2005-07-04 14:59) [7]


>  [5] begin...end ©   (04.07.05 14:51)
> > И где подгонка текста - в упор не вижу?
>
> DT_CALCRECT ?

И что? Где-то вычисленная высота используется?


 
Kolan ©   (2005-07-04 14:59) [8]


> Думкин ©   (04.07.05 14:49) [4]


Хорошо. А эта функция обрежет строку вот так:
Some String -> Som...ing. В зависимости от длинны прямоугольника.


> Это правильно.

Читакть как - Это правильно?


 
begin...end ©   (2005-07-04 15:04) [9]

> Kolan ©   (04.07.05 14:54) [6]

Grid.Options := Grid.Options + [goEditing]

> Думкин ©   (04.07.05 14:59) [7]

DT_MODIFYSTRING ?


 
Думкин ©   (2005-07-04 15:04) [10]

А...
я это в DrawCell все делал. Ясно.


 
Kolan ©   (2005-07-04 15:09) [11]


> Думкин ©   (04.07.05 14:59) [7]


Возми проверь. Кинь Edit. И используй функцию...


 
Kolan ©   (2005-07-04 15:22) [12]


> begin...end ©   (04.07.05 15:04) [9]


Намудрил я... :)


 
Думкин ©   (2005-07-05 08:59) [13]

> [11] Kolan ©   (04.07.05 15:09)

Я это понимаю. Просто речь была о TStringGrid - там решается все у меня иначе. И обрезание есть и подгонка высоты и хинты если надо - поэтому в  код и не въехал сходу... лишнего для себя заметил. и всего.



Страницы: 1 вся ветка

Текущий архив: 2005.07.25;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.044 c
14-1120210615
Rentgen
2005-07-01 13:36
2005.07.25
Длина кабеля LCD to IBM


14-1119592535
Игорь Шевченко
2005-06-24 09:55
2005.07.25
Юрий Зотов, с днем рождения!


14-1120467213
alex-drob
2005-07-04 12:53
2005.07.25
Как установить XP из под Dos


1-1120478877
Bless
2005-07-04 16:07
2005.07.25
Бывают ли объекты с self=nil?


14-1120142915
Anatoly Podgoretsky
2005-06-30 18:48
2005.07.25
Delphi for .NET Руководство разработчика