Форум: "Начинающим";
Текущий архив: 2005.11.20;
Скачать: [xml.tar.bz2];
ВнизВопрос про Stringgrid Найти похожие ветки
← →
Grol © (2005-10-30 01:55) [0]На форму кинул Stringgrid, в options указал свойство goEditing, то есть открыт для редактирования. Компилю...
Если щелкнуть 2 раза мышкой по таблице (по какой-нибудь ячейке), то для редактирование активизируется данная ячейка (т.е в ячейке будет мигать курсор). Так вот вопрос такой, когда я активизирую Stringgrid для редактирования, добавляется ли какая-нибудь информация в компонент Stringgrid о том, что таблица была активизированна для редактирования? Если да, то тогда будет ли эта информация сохраняться даже, если я уберу фокус со Stringgrid на какой-нибудь контрол? И как тогда удалить эту информацию из Stringgrid , как будто я и не активизировал таблицу на редактирование. Спасибо заранее за ответы и оказанную мне помощь в решении этого вопроса.
← →
Baltika-26 (2005-10-30 01:59) [1]Где-нибудь да ответят. Только вряд ли стараться будут на нескольких сайтах сразу отвечать.
← →
Grol © (2005-10-30 02:42) [2]Только таким образом можно добиться ответа в форумах. Разве не так?.....
Но не буду флеймить эту тему.
← →
GanibalLector © (2005-10-30 02:54) [3]2 Grol
>будет ли эта информация сохраняться даже, если я уберу фокус со Stringgrid на какой-нибудь контрол?
Ну,если создашь наследника TSringGrid ,то будет ;)
> как тогда удалить эту информацию из Stringgrid
procedure ClearGrid(Grid:TStringGrid);
var I:Integer;
begin
for I:=1 to Grid.RowCount-1 do
Grid.Rows[I].Clear;
end;
← →
Baltika-26 (2005-10-30 02:58) [4]>Grol
Это называется СПАМ.
← →
Grol © (2005-10-30 19:34) [5]Короче скажу так: если создавать дубликат компонента Stringgrid после ее активации на редактирование (в ячейки я ничего не заносил, а просто перевел на них фокус, чтоб курсор был в одной из ячеек таблицы), то почему-то когда я переношу информацию о Stringgride в TMemoryStream, для того чтоб создать дубликат этого компонента, то в TMemoryStream записывается и информация о TinplaceEdit, а в некоторых случаях даже выдается ошибка при создании дубликата. А если не активировать редактор, то операция клонирования компонента Stringgrid получается без проблем. Надеюсь, что сейчас вопрос уеснен. Спасибо тем, кто помогает мне!
← →
Grol © (2005-10-30 20:39) [6]Помогите...Help..Help...Help me...или просто вопрос слишком сложный, даже нитак, нерешимый. :(((
← →
Grol © (2005-10-30 23:12) [7]Мастера.....где ВЫ, мне нужна ВАША помощь.........спасибо всем кто помог мне!
← →
GanibalLector © (2005-10-31 00:29) [8]А что мешает проверить активен ли TInplaceEdit? Соответственно,если активен то предпринять какие либо действия : либо сообщение пользователю либо принудительно SetFocus куда-нибудь. Для проверки существования TInplaceEdit используй FindWindow(Ex)
← →
Grol © (2005-10-31 01:41) [9]И так...еще раз...поподробней. Вообще, что мне нужно: я хочу создать на форме клон (копию) [b]Stringgrid 1[/b]. Еще до компиляции программы у меня на форме есть [b]Stringgrid 1[/b] и кнопка, в которой код создания второго [b]Stinggrid 2[/b].
1 ситуация: Компилирую. По нажатию мной на кнопку. Создается [b]Stringgrid 2[/b], c такими же свойствами как и у [b]Stringgrid 1[/b]. Пока все нормально. Декомпилю.
2 ситуация: Снова компилю прогу. А теперь делаю так: перед тем как создавать [b]Stringgrid 2[/b], я щелкаю 2 раза мышкой по [b]Stringgrid 1[/b]. [b]Stringgrid 1[/b] активизируется на редактирование, т.е. куда я щелкнул в ячейке начал мигать курсор...ну а теперь жму на кнопку для создания [b]Stringgrid 2[/b]. И что же я вижу? Ага...ошибка! [b]Access Violation[/b] (То есть ошибка доступа к памяти). Все очень плохо. Выгружаю прогу.
3 ситуация: Помещаю на форму [b]edit[/b]. Компилирую. Щелкаю 2 раз по [b]Stringgrid 1[/b], активизируя режим редактирования таблицы. Перевожу мышкой фокус со [b]Stringgrid 1[/b] в [b]edit[/b] и жму на кнопку. Опять эта ошибка.
То есть, как я говорил раннее, в свойствах [b]Stringgrid 1[/b] или где-то...я не знаю где, сохраняется информация о том, что я когда-то активировал редактор [b]Stringgrid 1[/b] и поэтому к этой таблице нет доступа, ошибка тому доказательство.
[b]Спасибо всем![/b]
← →
GanibalLector © (2005-10-31 03:02) [10]2 Grol © (31.10.05 01:41) [9]
Да понял я ,понял. Тут два варианта : либо удалять TInplaceEdit до сохранении в Stream либо создавать . В общем ...проще создавать ) Конечный результат выглядит так :
function CloneGrid(Src: TStringGrid; const NewName: string): TStringGrid;
var
n : integer;
MS : TMemoryStream;
StrStream: TStringStream;
s, buf : string;
begin
MS := TMemoryStream.Create;
StrStream := TStringStream.Create(s);
try
MS.WriteComponent(Src);
MS.Position := 0;
ObjectBinaryToText(MS, StrStream);
StrStream.Seek(0, soFromBeginning);
buf := StrStream.DataString;
finally
StrStream.Free;
MS.Free;
end;
n := Pos(Src.Name, buf);
if n > 0 then begin
Delete(buf, n, Length(Src.Name));
Insert(NewName, buf, n);
end;
MS := TMemoryStream.Create;
StrStream := TStringStream.Create(buf);
try
ObjectTextToBinary(StrStream, MS);
MS.Position := 0;
RegisterClass(TInplaceEdit); // теперь будет работать ))
result := TStringGrid.Create(Src.Owner);
result.Parent := Src.Parent;
MS.ReadComponent(result);
finally
StrStream.Free;
MS.Free;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
r, x : integer;
begin
with CloneGrid( StringGrid1, "NewStringGrid") do
begin
Left := 0;
r := 0;
while r < StringGrid1.RowCount do
begin
Rows[r].Assign(StringGrid1.Rows[r]);
Inc(r);
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.Left:=250;
end;
← →
GanibalLector © (2005-10-31 03:04) [11]Кстати,мои догадки в [8] неверны ;) Бывает ))
← →
Grol © (2005-10-31 18:19) [12]GanibalLector спасибо за помощь, сейчас буду пробовать... :)))
← →
SaF22 (2005-11-01 13:23) [13]Братка, может это чем то тебе поможет:
procedure Draw(Sender: TObject; ACol, ARow: Longint; Rect: TRect;
State: TGridDrawState);
State - это состояние ячейки гридаб может принимать след. значения:
(gdSelected,gdFocused,gdFixed)
← →
SaF22 (2005-11-01 13:27) [14]if gdFocused in State
Then...
← →
GanibalLector © (2005-11-02 02:10) [15]2 SaF22
Вы это о чем???
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2005.11.20;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.056 c