Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
1-1130340430
vers
2005-10-26 19:27
2005.11.20
TPopupMenu с 32-битными картинками


2-1130628576
alyona
2005-10-30 02:29
2005.11.20
фото альбом


3-1128951085
MakNik
2005-10-10 17:31
2005.11.20
похоже на блокировку таблиц....?...


2-1131006047
ZaW
2005-11-03 11:20
2005.11.20
Динамический Popup


1-1130482777
Alex--
2005-10-28 10:59
2005.11.20
Проблема отбражения не стандартных цветов (XPManifest)





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский