powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TdxLayoutControl.SaveToStream сохраняет имя формы :(
15 сообщений из 40, страница 2 из 2
TdxLayoutControl.SaveToStream сохраняет имя формы :(
    #39764158
Фэйтл Эра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11Т.е. их надо скопировать в StringStream и проверить, если там что-то похожее на имя формы?
Товарищ, почему спрашиваете, не вы ли писали:

X11Там сохраняется "fmEdit.dxLayoutControlFrmAdd".
?
...
Рейтинг: 0 / 0
TdxLayoutControl.SaveToStream сохраняет имя формы :(
    #39764521
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем, сделал так.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
function LoadStreamToStr(stream: TStream; count: integer): String;
var
  Bytes: TBytes;
begin
  Result:= '';

  if Stream.Size > 0 then
  begin
    SetLength(Bytes, count);
    Stream.Read(Bytes[0], count);
  end;

  Result := TEncoding.ASCII.GetString(Bytes);
end;



В процедуре загрузки данных из стрима получаем первые 100 символов этого стрима для поиска названия формы
Код: pascal
1.
s := LoadStreamToStr(stream, 100);



проверяем
Код: pascal
1.
2.
if s.Contains(LayoutControl.Owner.Name) then
есть имя формы в сигнатуре стрима
...
Рейтинг: 0 / 0
TdxLayoutControl.SaveToStream сохраняет имя формы :(
    #39764545
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_nigger,

добавьте в метод RestoreFromStream строку stream.Position := 0;
...
Рейтинг: 0 / 0
TdxLayoutControl.SaveToStream сохраняет имя формы :(
    #39764594
Фэйтл Эра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11,

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
function GetNName(fSrc: TStream): string;
var
  fSavedPos: Integer;
  fStrPos: Integer;
begin
  SetLength(Result, 17);
  fSavedPos := fSrc.Position;
  fStrPos := 0;
  try
    fSrc.Position := 0;
    repeat
      inc(fStrPos);
      if fStrPos > Length(Result) then
        SetLength(Result, Length(Result) + 42);
      if fSrc.Read(Result[fStrPos], SizeOf(Char)) < SizeOf(Char) then Break;
    until Result[fStrPos] = '.';
    SetLength(Result, fStrPos - 1);
  finally
    fSrc.Position := fSavedPos;
  end;
end;
...
Рейтинг: 0 / 0
TdxLayoutControl.SaveToStream сохраняет имя формы :(
    #39764765
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я правильно понимаю, что не обязательно мне использовать LayoutControl.BeginUpdate, т.к. в методе TdxLayoutContainer.RestoreFrom уже есть BeginUpdate?
...
Рейтинг: 0 / 0
TdxLayoutControl.SaveToStream сохраняет имя формы :(
    #39764767
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фэйтл Эра, почему именно 17?
...
Рейтинг: 0 / 0
TdxLayoutControl.SaveToStream сохраняет имя формы :(
    #39764775
Фэйтл Эра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11Фэйтл Эра, почему именно 17?
Очень удобно: простое число, легко запимнить как натуральный логарифм от 24154952,753575298214775.
...
Рейтинг: 0 / 0
TdxLayoutControl.SaveToStream сохраняет имя формы :(
    #39765963
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Теперь похожая проблема с TcxPropertiesStore. Сохраняю размеры и положение окна (формы).

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
    cxPropertiesStore1.StorageName := Form.ClassName;
    cxPropertiesStore1.StorageType := stStream;

    with TcxPropertiesStoreComponent(cxPropertiesStore1.Components.Add) do
    begin
      Component := form;
      for I := 0 to Length(APropsForm) - 1 do
        Properties.Add(APropsForm[i]);
    end;//with

     cxPropertiesStore1.StorageStream := Stream;
     cxPropertiesStore1.StoreTo;
     q.ParamByName('STREAM').LoadFromStream(Stream);
     q.ExecQuery;



вот пример того, что сохраняется в базу: ...fmClientAdd....TcxPropertiesStoreComponent.....Top...

когда пользователь просматривает информацию, он открывает более одной формы fmClientAdd и получается, как я выше писал: fmClientAdd, fmClientAdd_1, fmClientAdd_2 и т.д. и cxPropertiesStore не применяет настройки окна.
...
Рейтинг: 0 / 0
TdxLayoutControl.SaveToStream сохраняет имя формы :(
    #39768654
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
up
...
Рейтинг: 0 / 0
TdxLayoutControl.SaveToStream сохраняет имя формы :(
    #39768656
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Переделал так:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
    with TcxPropertiesStoreComponent(cxPropertiesStore1.Components.Add) do
    begin
      Component := form;
      Component.Name := '';
      for I := 0 to Length(APropsForm) - 1 do
        Properties.Add(APropsForm[i]);
    end;//with



вроде работает
...
Рейтинг: 0 / 0
TdxLayoutControl.SaveToStream сохраняет имя формы :(
    #39769219
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11
Код: pascal
1.
Component.Name := '';



Нет, так нельзя, тогда меняется имя и у самой формы :(
...
Рейтинг: 0 / 0
TdxLayoutControl.SaveToStream сохраняет имя формы :(
    #39769335
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11Нет, так нельзя, тогда меняется имя и у самой формы :(Не смотрел но... а восстановить имя после не судьба?
...
Рейтинг: 0 / 0
TdxLayoutControl.SaveToStream сохраняет имя формы :(
    #39769346
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я стормозил
...
Рейтинг: 0 / 0
TdxLayoutControl.SaveToStream сохраняет имя формы :(
    #39769424
Фэйтл Эра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11,

не останавливайся, пожалуйста. :)
...
Рейтинг: 0 / 0
TdxLayoutControl.SaveToStream сохраняет имя формы :(
    #39770700
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может, кому пригодится.
У TdxBarManager нужно менять/удалять и потом восстанавливать TdxBarManager.owner.name.

Хорошо, если бы разработчики в будущем добавили какое-нибудь свойство, чтобы имя формы не влияло. Может быть даже, чтобы и имя компоненты не влияло. Или дать возможность самим управлять "именем" при сохранении в стрим.
...
Рейтинг: 0 / 0
15 сообщений из 40, страница 2 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TdxLayoutControl.SaveToStream сохраняет имя формы :(
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]