![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как разрешить изменять текст в StringGrid и как получить Reсt
Kolan © (2005-07-04 14:32:00)Здравствуйте,
Сразу два вопроса:
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 каждой ячейки.
Думкин (2005-07-05 08:59:00) [1]> [11] Kolan © (04.07.05 15:09)
Я это понимаю. Просто речь была о TStringGrid - там решается все у меня иначе. И обрезание есть и подгонка высоты и хинты если надо - поэтому в код и не въехал сходу... лишнего для себязаметил. и всего.
Kolan (2005-07-04 15:22:00) [2]
> begin...end © (04.07.05 15:04) [9]
Намудрил я... :)
Kolan (2005-07-04 15:09:00) [3]
> Думкин © (04.07.05 14:59) [7]
Возми проверь. Кинь Edit. И используй функцию...
begin...end (2005-07-04 15:04:00) [4]> 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:00) [5]А...
я это в DrawCell все делал. Ясно.
Думкин (2005-07-04 14:59:00) [6]
> [5] begin...end © (04.07.05 14:51)
> > И где подгонка текста - в упор не вижу?
>
> DT_CALCRECT ?
И что? Где-то вычисленная высота используется?
Kolan (2005-07-04 14:59:00) [7]
> Думкин © (04.07.05 14:49) [4]
Хорошо. А эта функция обрежет строку вот так:
Some String -> Som...ing. В зависимости от длинны прямоугольника.
> Это правильно.
Читакть как - Это правильно?
Kolan (2005-07-04 14:54:00) [8]Как до них добраться?
пробовал так
TFakeGrid=class(TCustomGrid);
var
I: Integer;
OptionsSet: TGridOptions;
...
OptionsSet := TFakeGrid(ReportGrid).Options;
Include(OptionsSet, goEditing);
TFakeGrid(ReportGrid).Options := OptionsSet;
Это правильно.
begin...end (2005-07-04 14:51:00) [9]> Думкин © (04.07.05 14:49) [4]
> А резалт куда?
В строке
> Result := P
копируется не указатель, а тело строки.
> И где подгонка текста - в упор не вижу?
DT_CALCRECT ?
Думкин (2005-07-04 14:49:00) [10]> [3] begin...end © (04.07.05 14:45)
Да? Ну ладно. А резалт куда? И где подгонка текста - в упор не вижу?
Автору: посмотри для начала статью Паши Голубя про многострочный TStyringGrid.
begin...end (2005-07-04 14:45:00) [11]> Думкин © (04.07.05 14:43) [2]
Всё нормально. Кроме отсутствия try/finally и использования устаревших функций.
Думкин (2005-07-04 14:43:00) [12]> P := AllocMem(Length(S) + 1);
> StrCopy(P, PChar(S));
....
> Result := P;
> FreeMem(P);
?
begin...end (2005-07-04 14:39:00) [13]> Kolan © (04.07.05 14:32)
> Как разрегшить пользователям менять содержимое ячеек.
TCustomGrid.Options + goEditing.
> Как мне получить Rect каждой ячейки.
TCustomGrid.CellRect.