![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
StringGrid при нажатии на ячейку был выделенный текст [D7, WinXP]
Dmitry_177 © (2007-05-17 14:46:00)Есть StringGrid, как сделать так что при выборе ячейки выделялась не сама полностью ячейка а только текст который там находится, т.е. так что коббудто весь этот текст выделили?
А еще как сделать так чтобы каретка не моргала? т.е. что текст нельзя редактировать?
ЮЮ (2007-05-18 10:49:00) [1]>EditorMode он только лишь разрешает/запрещает редактирование.. А вот как бы мне выделить весь текст?
Это что за новое толкование поведения Грида? Изменеие EditorMode - это создание/уничтожение InplaceEdit-а, к которому, собственно, уже и следует обращвться для выделения текста:
type TStringGridAccess = class(TStringGrid);
procedure TForm1.Label1Click(Sender: TObject);
begin
if not StringGrid1.EditorMode then
StringGrid1.EditorMode := true;
TStringGridAccess(StringGrid1).InplaceEditor.SelectAll
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
StringGrid1.SetFocus;
Label1Click(nil);
end;
{RASkov} (2007-05-18 03:45:00) [2]> [4] Германн © (18.05.07 00:52)
> Летнее обострение?
ЛюдЯм поднадоело привычное(стандартное), хотят изврата.... :о) Сам удивляюсь ихим желаниям....;)
В принципе ничего удивительного не было, елиб не пытались рисовать на Мемо или вводить текст в Image с клавиатуры....(утрировано)..)
Германн (2007-05-18 00:52:00) [3]
> А это извращение...
И в прямь извращение, согласен. И сколько сейчас на форуме подобного извращения, просто жуть берёт. То Мемо без каретки и копирования, то StringGrid.
Летнее обострение? :)
{RASkov} (2007-05-18 00:19:00) [4]> А вот как бы мне выделить весь текст?
Попробуй плясать вот отсюда, но это не отвечает на все твои вопросы:
procedure TForm1.FormCreate(Sender: TObject);
var C, R: Integer;
begin
StringGrid1.Options:=StringGrid1.Options+[goEditing];
for C := 0 to StringGrid1.ColCount-1 do
for R := 0 to StringGrid1.RowCount-1 do
StringGrid1.Cells[C, R]:=Format('[%d,%d]', [C, R]);
end;
type TGr = class(TCustomGrid);
procedure TForm1.StringGrid1Click(Sender: TObject);
begin
TGr(Sender).ShowEditor;
//TGr(Sender).InplaceEditor.SelectAll; //Выделить весь текст. В данном месте не обязательно.
HideCaret(TGr(Sender).InplaceEditor.Handle); //И это не навсегда :) Стоит кликнуть по Fixed
end;
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
Key:=#0; // >т.е. что текст нельзя редактировать?
end;
Или смени контрол(StringGrid) или пиши наследника.... А это извращение...
Dmitry_177 (2007-05-17 19:35:00) [5]EditorMode он только лишь разрешает/запрещает редактирование.. А вот как бы мне выделить весь текст?
{RASkov} (2007-05-17 15:05:00) [6]> [0] Dmitry_177 (17.05.07 14:46)
Смотри EditorMode или ShowEditor->(TCustomGrid)
Ну а по второй части вопроса HideCaret(<InplaceEdit>.Handle), а вот еще и только для чтения, тут фик знает, как проще сделать, наверное свой грид наследовать от TCustomGrid