Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) РасширениеФормы.ДобавитьАтрибут() (число прочтений - 2730 )
recop
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 235
Местоположение: Калуга
Зарегистрирован: 06. Июня 2017
Пол: Мужской
РасширениеФормы.ДобавитьАтрибут()
24. Марта 2019 :: 05:27
Печать  
Столкнулся с таким поведением:

Код
Выбрать все
procedure ПослеОткрытия()
	РасшФормы = СоздатьОбъект("РасширениеФормы");
	Атрибут = РасшФормы.ДобавитьАтрибут("Текст",1);
	Атрибут.УстановитьКоординаты(12,25,200,20);
	Атрибут.Заголовок = "Многоточие в конце ...";
endprocedure // ПослеОткрытия()
 



Получаю до и после обновления формы:



Что я делаю не так?
  
Наверх
 
IP записан
 
nicesc
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 45
Зарегистрирован: 13. Июня 2009
Пол: Мужской
Re: РасширениеФормы.ДобавитьАтрибут()
Ответ #1 - 24. Марта 2019 :: 10:27
Печать  
Возможно переменная не объявлена:

Перем Атрибут;
  
Наверх
 
IP записан
 
recop
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 235
Местоположение: Калуга
Зарегистрирован: 06. Июня 2017
Пол: Мужской
Re: РасширениеФормы.ДобавитьАтрибут()
Ответ #2 - 24. Марта 2019 :: 15:02
Печать  
nicesc писал(а) 24. Марта 2019 :: 10:27:
Возможно переменная не объявлена:

Перем Атрибут;


Не помогло.
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 571
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: РасширениеФормы.ДобавитьАтрибут()
Ответ #3 - 24. Марта 2019 :: 16:00
Печать  
Какая переменная ИдАтрибута? Это никак не связано...

Сделай штатно, через Форма.ИдАтрибута.Заголовок
  
Наверх
www  
IP записан
 
recop
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 235
Местоположение: Калуга
Зарегистрирован: 06. Июня 2017
Пол: Мужской
Re: РасширениеФормы.ДобавитьАтрибут()
Ответ #4 - 24. Марта 2019 :: 16:19
Печать  
Djelf писал(а) 24. Марта 2019 :: 16:00:
Какая переменная ИдАтрибута? Это никак не связано...

Сделай штатно, через Форма.ИдАтрибута.Заголовок


Форма.Текст.Заголовок("Многоточие в конце ...");
Форма.ПолучитьАтрибут("Текст").Заголовок("Многоточие в конце ...");

попровал в первую очередь результат вывода "Текст", после обновления формы "0".

Обрати внимание на точки Улыбка
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 571
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: РасширениеФормы.ДобавитьАтрибут()
Ответ #5 - 25. Марта 2019 :: 05:46
Печать  
Ааааа.... точки!!! Да, забавно.

Сделай вот так

Атрибут.Формула="""Многоточие в конце ...""";
Атрибут.ИзменитьРасширенныйСтиль(8192,);
  
Наверх
www  
IP записан
 
recop
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 235
Местоположение: Калуга
Зарегистрирован: 06. Июня 2017
Пол: Мужской
Re: РасширениеФормы.ДобавитьАтрибут()
Ответ #6 - 25. Марта 2019 :: 06:34
Печать  
Djelf писал(а) 25. Марта 2019 :: 05:46:
Ааааа.... точки!!! Да, забавно.

Сделай вот так

Атрибут.Формула="""Многоточие в конце ...""";
Атрибут.ИзменитьРасширенныйСтиль(8192,);

Спасибо! Решено. С формулой сам должен был догадаться, а вот расширенным стилем... офигеть.
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 571
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: РасширениеФормы.ДобавитьАтрибут()
Ответ #7 - 25. Марта 2019 :: 06:48
Печать  
recop писал(а) 25. Марта 2019 :: 06:34:
Djelf писал(а) 25. Марта 2019 :: 05:46:
Ааааа.... точки!!! Да, забавно.

Сделай вот так

Атрибут.Формула="""Многоточие в конце ...""";
Атрибут.ИзменитьРасширенныйСтиль(8192,);

Спасибо! Решено. С формулой сам должен был догадаться, а вот расширенным стилем... офигеть.


Тут такая штука:
Без установки какой-то формулы, ее потом менять было бы нельзя. Надо было бы в коде FormEx не 0, а по аналогии с Примечанием и Описанием, которые такими словами и заполняются установить формулу как "Формула", было бы понятнее откуда уши растут.
А РасширенныйСтиль не стандартно используется 1С до создания контрола, 8192 это CS_EX_VISIBLE, описание можешь посмотреть в 1cheaders.h, и после создания "висит" на контроле но обрабатывается уже стандартно, как WS_EX_RTLREADING, поэтому его и требуется сбросить.
  
Наверх
www  
IP записан
 
recop
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 235
Местоположение: Калуга
Зарегистрирован: 06. Июня 2017
Пол: Мужской
Re: РасширениеФормы.ДобавитьАтрибут()
Ответ #8 - 19. Апреля 2019 :: 06:17
Печать  
Как исправить размещение текста по высоте?

Код:
Код
Выбрать все
 РасширениеФормы.ДобавитьАтрибут(ИД,2);
 



Результат:


По параметрам только класс разный, но он только для чтения:
Код
Выбрать все
Штатный.Класс =    "CTempWnd(0x40)->                   CWnd(0x40)->CCmdTarget(0x20)->CObject(0x4)->"
Добавленый.Класс = "CBtnEdit(0x54)->CMaskEdit(0x44)->  CWnd(0x40)->CCmdTarget(0x20)->CObject(0x4)->"
 




Какой-то полный косяк с добавленным Полем Ввода. Кнопка выбора после добавления чудит. Класс не соответствует. Установленный цвет атрибута слетает после обновления формы. Что я делаю не так?

« Последняя редакция: 19. Апреля 2019 :: 08:04 - recop »  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 571
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: РасширениеФормы.ДобавитьАтрибут()
Ответ #9 - 19. Апреля 2019 :: 09:39
Печать  
Это к АЛьФ`у...

У контрола не установлен флаг WS_BORDER, из-за этого координаты текста относительно самого контрола не смещаются правее/ниже чем должны.
Но WS_BORDER должен быть взведен до привязки/отображения контрола на форме.

Еще и WS_GROUP не взведен, но для этого типа контрола это не существенно.

Код (C++)
Выбрать все
BOOL CFormEx::AddAttrib(int iMethNum, CValue& rValue, const CValue& ValueAttribID, const CValue& ValueAttribType, const CValue& ValueAttribValueKindOrFormul, const CValue& ValuePosInTable )
{
...
	}
+	else if (CtrlType == EDIT_CTRL_TYPE)
+    {
+		dwStyle |= WS_GROUP|WS_BORDER;
+	}
	else if (bIsStatic) // TODO
	{
		dwStyle |= WS_GROUP; //0x00020000L
	}
	CtrlInfo.SetStyle(dwStyle);
	CtrlInfo.SetExStyle(dwExStyle);

 

« Последняя редакция: 19. Апреля 2019 :: 12:10 - Djelf »  
Наверх
www  
IP записан
 
recop
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 235
Местоположение: Калуга
Зарегистрирован: 06. Июня 2017
Пол: Мужской
Re: РасширениеФормы.ДобавитьАтрибут()
Ответ #10 - 18. Июня 2019 :: 10:34
Печать  
Сегодня заглянул в кладовочку Альфа. С трепетом обнаружил релиз от 21.05.2019.
Вернулся к манифесту и очень расстроился. Метод "ДобавитьАтрибут(,2)" никак не создает поле ввода подобное штатному. Всё так же текст подтягивается влево вверх, что не позволяет использовать его на форме. Разница между тем что было и что стало показывает, что работа велась, но... Ребята ваших знаний полагаю более чем достаточно, чтобы решить эту проблему, объединитесь уже в конце концов.



С надеждой на лучшее...
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать