Вверх ↑
Этот топик читают: Гость
Ответов: 9906
Рейтинг: 351
#1: 2013-01-21 12:53:04 ЛС | профиль | цитата
Есть значит такой элемент (хех )
И есть у него такое св-во: SavePosName

И чего мне показалось: что потеря позиции в дочерней форме (если ее не открывать) -- выглядит не очень логично.
В такой, например, схеме:
Add(MainForm,2953706,119,161)
{
SavePosName="Ку.iniMain"
}
Add(ChildFormEx,13851392,182,217)
{
}
BEGIN_SDK
Add(EditMultiEx,2925212,21,21)
{
WorkCount=#9:doVisible|
link(doVisible,5496108:doVisible,[(28,27)(28,139)])
}
Add(MainForm,5496108,35,105)
{
Left=35
Top=105
Visible=1
SavePosName="Ку.iniChild"
Point(doVisible)
}
END_SDK
Add(Button,10828232,119,217)
{
Left=35
Top=30
link(onClick,13851392:doVisible,[])
}

карма: 9

0
файлы: 1Куmainform.rar [4.3KB] [293]
vip
#1.1контекстная реклама от партнеров
Разработчик
Ответов: 26068
Рейтинг: 2121
#2: 2013-01-21 13:19:21 ЛС | профиль | цитата
Galkov писал(а):
потеря позиции в дочерней форме (если ее не открывать) -- выглядит не очень логично

Мне еще не нравится, что если переместит главную или запустить главную в центре, то дочерняя запускается всегда в углу, даже без сохранения. Получается не очень красиво.
карма: 22

0
Ответов: 9906
Рейтинг: 351
#3: 2013-01-21 14:07:20 ЛС | профиль | цитата
nesco писал(а):
если переместит главную или запустить главную в центре

Чего-то у меня так не получается...
Теперь, по крайней мере. А откатываться -- лень

nesco, я же таблетку приложил - ты смотрел


карма: 9

0
Разработчик
Ответов: 26068
Рейтинг: 2121
#4: 2013-01-21 14:36:29 ЛС | профиль | цитата
Galkov писал(а):
я же таблетку приложил - ты смотрел

Конечно, я уже все это добавил. Стало нормально сохранять позицию дочерней формы после перемещения. А вот если убрать сохранение позиции и поставить Position=poCenter, то запускается главная в центре, а дочерняя первый раз в углу. Или переместить главную куда-нибудь, то запускается дочерняя первый раз в том же углу. Очень бы неплохо было бы привязать дочернюю при первом запуске к текущей позиции главной.
Просто мы про разные немного вещи -- ты про некорректное сохранение позиции, а я про отсутствующее сохранение и первый запуск
карма: 22

0
Ответов: 9906
Рейтинг: 351
#5: 2013-01-21 16:53:14 ЛС | профиль | цитата
понял, придумаем чего-нибудь
------------ Дoбавленo в 16.53:
А если попробовать так
карма: 9

0
файлы: 1Кюmainform.rar [5.8KB] [304]
Разработчик
Ответов: 26068
Рейтинг: 2121
#6: 2013-01-21 17:11:37 ЛС | профиль | цитата
Galkov писал(а):
А если попробовать так

В принципе, работает для дочерней.
Интересное поведение наблюдается в ChildFormPoly -- достаточно установить в любой, даже не базовой форме poOwner, как все остальные начинают работать с привязкой к позиции. А вот для обычных это не катит, каждой надо прописывать привязку
карма: 22

0
Ответов: 9906
Рейтинг: 351
#7: 2013-01-21 22:18:08 ЛС | профиль | цитата
В принципе, я тебя так и не понял

Мне казалось, что "фактор неожиданности", когда двигаешь главную, а дочерняя остается "в углу" - не есть хорошо.
И это исправилось, вроде БЫ...

Если не считать того, что второе мое предложение сексуально несовместимо с первым, как оказалось.
Но и это чинится, пожалуй...

Так починить, или как
карма: 9

0
Разработчик
Ответов: 26068
Рейтинг: 2121
#8: 2013-01-21 23:01:52 ЛС | профиль | цитата
Galkov писал(а):
В принципе, я тебя так и не понял

Да нормально все, единственный интересный прикол только с ChildFormPoly врзник, но это не смертельно. Я просто не ожидал такого решения, что это будет отдельным параметром

Galkov писал(а):
Так починить, или как

Еще и спрашивает, конечно же починить
карма: 22

0
Ответов: 9906
Рейтинг: 351
#9: 2013-01-21 23:17:21 ЛС | профиль | цитата
Угу.
Но тестировать надо... Все в жизни бывает.
А это достаточно замороченный элемент таки
карма: 9

0
файлы: 1Кююmainform.rar [4.3KB] [331]
Разработчик
Ответов: 26068
Рейтинг: 2121
#10: 2013-01-22 01:07:56 ЛС | профиль | цитата
Galkov писал(а):
Но тестировать надо...

Потестировал и нашел баг -- при установке poCenter в главной форме и установленном имени ini файла, форма перестала позиционироваться в центр при запуске
карма: 22

0
Ответов: 9906
Рейтинг: 351
#11: 2013-01-22 09:10:55 ЛС | профиль | цитата
Ну давай так попробуем:

#pas
procedure THIMainForm.Init;
var vsb:boolean;
begin

vsb:= _prop_Visible;
_prop_Visible:= false;

if not isMain then
FormList.AddObject('', Control.Handle);

inherited;
_prop_Position(false);
if _prop_SavePosName='' then
else if Pos('.ini\',_prop_SavePosName)=0 then
_prop_Position := Registry
else _prop_Position := IniFile;
_prop_Visible:= vsb;
SetAlphaBlendValue(_prop_AlphaBlendValue);
if _prop_ClientSize then
Control.SetClientSize(_prop_Width,_prop_Height);
Control.OnPaint := _OnPaint;
Control.Tag := Longint(Self);
end;


А то, как справедливо отметил Леонид, у меня уже фантазия на имена "мэйнформов" закончились
карма: 9

0
Разработчик
Ответов: 26068
Рейтинг: 2121
#12: 2013-01-22 09:25:12 ЛС | профиль | цитата
Galkov писал(а):
Ну давай так попробуем

Не, не работает. Ставлю SavePosName=Ку.iniMain и Position=poCenter -- форма запускается в углу
карма: 22

0
Ответов: 9906
Рейтинг: 351
#13: 2013-01-22 10:22:46 ЛС | профиль | цитата
Хм... А у меня работает

Сейчас супер-пупер сравнения делать буду...
------------ Дoбавленo в 10.22:
Слушай nesco, я сказал все правильно:

  • у меня изменения относительно КююMainForm -- только в приведенном INI
  • Ставлю SavePosName=Ку.iniMain и Position=poCenter -- форма запускается в центре
  • Если, конечно, перед этим я удалил Ку.ini
  • С реестром -- аналогично (если, конечно, предварительно удален ключ в реестре)

На всякий случай, повторю аттач
карма: 9

0
файлы: 1qymainform.rar [4.3KB] [303]
Разработчик
Ответов: 26068
Рейтинг: 2121
#14: 2013-01-22 10:32:26 ЛС | профиль | цитата
Galkov писал(а):
На всякий случай, повторю аттач

Вроде работает. Похоже на то, что я забыл файл ini удалить
карма: 22

0
14
Сообщение
...
Прикрепленные файлы
(файлы не залиты)