Форум » GUI » LABEL проблема » Ответить

LABEL проблема

Новичок: если в LABEL подключить VCENTERALIGN @ 010,010 LABEL lbl_EXM VALUE 'abcdef abcdef abcdef abcdef abcdef' WIDTH 100 HEIGHT 070 CENTERALIGN VCENTERALIGN то не происходит автоперенос текста, если убрать VCENTERALIGN то текст переносится без проблем возможно кто-то не доделал централизацию мультитекста по вертикали Пожалуйста допилите пожалуйста.

Ответов - 14

Andrey: Новичок пишет: кто-то не доделал централизацию мультитекста по вертикали Я задавал такой вопрос. На него ответили - делать нужно самостоятельно ! Ручками, ручками и вперед.

SergKis: Andrey пишет На него ответили - делать нужно самостоятельно ! Ответь, что такое VCENTERALIGN ?

Andrey: Текст по центру. Если есть несколько строчек, то всё равно получается одна строка по центру. Т.е. нет центрирования несколько строчек в заданных координатах. Центрироваться может только одна строка, которая входит по данным координатам.


SergKis: Новичок пишет возможно кто-то не доделал централизацию мультитекста по вертикали Андрей, думаю, полностью ответил поставленный вопрос о доделках, т.е. на сколько подстрок не дели строку, они лягут поверх первой части. Пожалуйста допилите пожалуйста. Как сказал Андрей "Ручками, ручками и вперед." В помощь пример BASIC\COLORED_LABEL - вывод текста с помощью Label и возможные решения разные

Andrey: Возник вопрос такой - как убрать у объекта свойство VCENTERALIGN ? Т.е. изначально выводиться одна строка, а когда нужно вывести две строки, то нужно убрать это свойство. Как это сделать ? Нашел по подсказке Сергея функцию: [pre][pre2]FUNCTION _SetAlign ( ControlName , ParentForm , cAlign ) *-----------------------------------------------------------------------------* LOCAL i IF ( i := GetControlIndex ( ControlName , ParentForm ) ) > 0 DO CASE CASE cAlign == "LEFT" ChangeStyle ( _HMG_aControlHandles , , ES_CENTER + ES_RIGHT ) CASE cAlign == "RIGHT" ChangeStyle ( _HMG_aControlHandles , ES_RIGHT , ES_CENTER + ES_RIGHT ) CASE cAlign == "CENTER" ChangeStyle ( _HMG_aControlHandles , ES_CENTER , ES_CENTER + ES_RIGHT ) CASE cAlign == "VCENTER" ChangeStyle ( _HMG_aControlHandles , SS_CENTERIMAGE ) ENDCASE _Refresh ( i ) ENDIF RETURN Nil [/pre2][/pre] Но эта функция ставит это свойство, а как убрать ?

gfilatov2002: Andrey пишет: как убрать ? [pre2] IF IsWindowHasStyle ( GetControlHandle ( Arg2 , Arg1 ) , SS_CENTERIMAGE ) ChangeStyle ( _HMG_aControlHandles [ i ] , , SS_CENTERIMAGE ) ENDIF [/pre2]

Andrey: Спасибо БОЛЬШОЕ !!! Только непонятно как это применить к конкретному LABEL ? [pre2]IF nLine == 1 _SetAlign ( ControlName , ParentForm , "VCENTER" ) ELSE ??????? ENDIF[/pre2]

SergKis: Andrey пишет Только непонятно как это применить к конкретному LABEL ? А если присмотреться ты делал это много раз, в коде исп. handle твоего, нужного LABEL

Andrey: SergKis пишет: А если присмотреться ты делал это много раз Что делал уже забыл... Памяти нет совсем... Пишу теперь подсказки себе. SergKis пишет: в коде исп. handle твоего, нужного LABEL Это где я делал ?

gfilatov2002: Andrey пишет: как это применить к конкретному LABEL ? Лови рабочий пример использования: [pre2]/* * MINIGUI - Harbour Win32 GUI library Demo * */ #include "minigui.ch" #include "i_winuser.ch" Function Main DEFINE WINDOW Form_1 ; AT 0,0 ; WIDTH 400 ; HEIGHT 300 ; TITLE "MiniGUI Label Demo" ; MAIN ; FONT "Arial" SIZE 10 @ 010,10 LABEL Label_1 VALUE "Label_1" ; WIDTH 120 HEIGHT 60 TOOLTIP "Label 1" ; CENTERALIGN BACKCOLOR SILVER @ 100, 10 BUTTON Button_1; CAPTION "Remove VCENTER" ; ON CLICK ( RemoveAlign("Label_1", "Form_1"), ; Form_1.Label_1.Value := 'New Value' + CRLF + 'New Value2' + CRLF + 'New Value3' ) ; WIDTH 120 ; HEIGHT 25 END WINDOW Form_1.Label_1.Alignment := 'VCenter' Form_1.Label_1.Value := 'New Value' CENTER WINDOW Form_1 ACTIVATE WINDOW Form_1 Return Nil Function RemoveAlign( ControlName, ParentForm ) local i := GetControlIndex( ControlName, ParentForm ) IF IsWindowHasStyle ( _HMG_aControlHandles [ i ] , SS_CENTERIMAGE ) ChangeStyle ( _HMG_aControlHandles [ i ] , , SS_CENTERIMAGE ) ENDIF Return Nil [/pre2]

SergKis: gfilatov2002 пишет Лови рабочий пример использования: Тогда может что то такое[pre2] *-----------------------------------------------------------------------------* FUNCTION _SetAlign ( ControlName , ParentForm , cAlign, lVCenter ) *-----------------------------------------------------------------------------* LOCAL i, j IF ( i := GetControlIndex ( ControlName , ParentForm ) ) > 0 DO CASE CASE cAlign == "LEFT" ChangeStyle ( _HMG_aControlHandles [ i ] , , ES_CENTER + ES_RIGHT ) CASE cAlign == "RIGHT" ChangeStyle ( _HMG_aControlHandles [ i ] , ES_RIGHT , ES_CENTER + ES_RIGHT ) CASE cAlign == "CENTER" ChangeStyle ( _HMG_aControlHandles [ i ] , ES_CENTER , ES_CENTER + ES_RIGHT ) CASE cAlign == "VCENTER" lVCenter := !Empty(lVCenter) .or. lVCenter == NIL j := IsWindowHasStyle ( _HMG_aControlHandles [ i ] , SS_CENTERIMAGE ) IF j .and. lVCenter ELSEIF j .and. !lVCenter ChangeStyle ( _HMG_aControlHandles [ i ] , , SS_CENTERIMAGE ) ELSE ChangeStyle ( _HMG_aControlHandles [ i ] , SS_CENTERIMAGE ) ENDIF ENDCASE _Refresh ( i ) ENDIF RETURN Nil [/pre2]

gfilatov2002: SergKis пишет: может что то такое Добавил новое свойство NoVCenter Теперь можно сделать то же самое проще: [pre2]#include "minigui.ch" Function Main DEFINE WINDOW Form_1 ; AT 0,0 ; WIDTH 400 ; HEIGHT 300 ; TITLE "MiniGUI Label Demo" ; MAIN ; FONT "Arial" SIZE 10 @ 010,10 LABEL Label_1 VALUE "Label_1" ; WIDTH 120 HEIGHT 60 TOOLTIP "Label 1" ; CENTERALIGN BACKCOLOR SILVER @ 100, 10 BUTTON Button_1; CAPTION "Remove VCENTER" ; ON CLICK ( Form_1.Label_1.Alignment := 'NoVCenter', ; Form_1.Label_1.Value := 'New Value' + CRLF + 'New Value2' + CRLF + 'New Value3' ) ; WIDTH 120 ; HEIGHT 25 @ 130, 10 BUTTON Button_2; CAPTION "Add VCENTER" ; ON CLICK ( Form_1.Label_1.Alignment := 'VCenter', ; Form_1.Label_1.Value := 'New Value' ) ; WIDTH 120 ; HEIGHT 25 END WINDOW Form_1.Label_1.Alignment := 'VCenter' Form_1.Label_1.Value := 'New Value' CENTER WINDOW Form_1 ACTIVATE WINDOW Form_1 Return Nil [/pre2]

Andrey: gfilatov2002 пишет: Добавил новое свойство NoVCenter Это просто ОТЛИЧНО ! Спасибо БОЛЬШОЕ !!! А когда в библиотеке это будет ?

gfilatov2002: Andrey пишет: когда в библиотеке это будет ? В третьем апдейте сборки 21.07, который выйдет на этой неделе



полная версия страницы