Текущий архив: 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.47 MB
Время: 0.01 c