Главная страница
    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.47 MB
Время: 0.01 c
14-1120154138
ArMellon
2005-06-30 21:55
2005.07.25
Список юзверей в чате


1-1120934152
Michael5
2005-07-09 22:35
2005.07.25
Научите сплиттером пользоваться!


1-1120502053
Гаврилов В.А.
2005-07-04 22:34
2005.07.25
Возможно ли передать данные из listview в exsel


14-1120049727
Seg
2005-06-29 16:55
2005.07.25
Иконки на кнопки панели компонент Delphi


4-1117287880
zeroo
2005-05-28 17:44
2005.07.25
Как отловить нажатие клавиши TAB





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский