Главная страница
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.05 c
6-1113448443
NikNet
2005-04-14 07:14
2005.07.25
WinSock2 на чистом API без форм! Может у кого заволялось?


1-1120656537
denissoft
2005-07-06 17:28
2005.07.25
MQL4


1-1120478236
Pasha L
2005-07-04 15:57
2005.07.25
Чем TStringGrid отличается от TDrawGrid


6-1113684310
gogi
2005-04-17 00:45
2005.07.25
Как изменить IP


1-1120823081
sergg
2005-07-08 15:44
2005.07.25
Не получается сделать невидимым TabSheet от PageControl