Вопросы о toolbar

Приемы и подходы, обмен опытом

Модераторы: Screw, larin

Ответить
PViP
партнер
Сообщения: 71
Зарегистрирован: Пт, 19/10/2007 11:38
Имя Фамилия: Павел Полухин
Откуда: Галактика-Красноярск
Контактная информация:

Вопросы о toolbar

Сообщение PViP »

Захотелось сделать toolbar в интерфейсе!

По vipprog.chm разборался как что делается, но пару моментов не нашел!

1. Как вставить разделитель в инструментальную панель(черта разделитель между кнопками)?

2. Как сделать чтобы кнопка была зажата(тоесть появился эффект переключателя зажата/отжата)?
На этот счет обнаружил такую функцию

Код: Выделить всё

 
function ShowToolButtonEx(toolBarID : longInt; 
                          buttonName : string; 
                          flags : word 
                         ) : word 
 
но заставить ее работать не получается

Вот пример моего фейса

Код: Выделить всё

 

#commands start at 7800 
const 
cmGoToForm   = 7701; 
cmGoToFilter = 7702; 
cmGoToReport = 7703; 
end; 

bmp1 bitmap "Заявки.bmp" 
bmp2 bitmap "Фильтры.bmp" 
bmp3 bitmap "Отчеты.bmp" 

toolBar ZyavkaToolBar { 
  button1 = cmGoToForm, bmp1,"ЗАЯВКИ"; 
  button2 = cmGoToFilter, bmp2, "ФИЛЬТРЫ"; 
  button3 = cmGoToReport, bmp3, "ОТЧЕТЫ"; 
}; 

interface ifcMakeZayavka 'Заявки' sci3InsPMcIns), cyan; 
    show at (,,100,30); 
    toolbar ZyavkaToolBar; 

var ZyavkaToolBar : longInt; 

create view vMain 
 ActivSheet : word; 
; 

procedure SetSheet(Number : word); 
{ 
      ShowToolButtonEx(ZyavkaToolBar, case(MainView.ActivSheet; 1 : 'button1', 2 : 'button2', 3 : 'button3'; '' ), TB_CHECKED); 
      set vMain.ActivSheet := Number; 
      ShowToolButtonEx(ZyavkaToolBar, case(MainView.ActivSheet; 1 : 'button1', 2 : 'button2', 3 : 'button3'; '' ), TB_CHECKED); 
}    
  HandleEvent 
    cmInit : { 
       ZyavkaToolBar := LoadToolBarEx ('ZyavkaToolBar'); 
    } 
    cmGoToFilter : { 
      SetSheet(2); 
    } 
    cmGoToForm : { 
      SetSheet(1); 
    } 
    cmGoToReport : { 
      SetSheet(3); 
    } 
  end; 
end.
PViP
партнер
Сообщения: 71
Зарегистрирован: Пт, 19/10/2007 11:38
Имя Фамилия: Павел Полухин
Откуда: Галактика-Красноярск
Контактная информация:

Сообщение PViP »

Попутно еще, как задать программно расположение toolbar(сверзу/снизу/справа/слева окна)?
PViP
партнер
Сообщения: 71
Зарегистрирован: Пт, 19/10/2007 11:38
Имя Фамилия: Павел Полухин
Откуда: Галактика-Красноярск
Контактная информация:

Сообщение PViP »

и так, прошло 12 дней, грубо говоря пол месяца....
Gera
топ-софт
Сообщения: 97
Зарегистрирован: Пн, 24/09/2007 17:53
Имя Фамилия: Юрий Герман
Откуда: ТопСофт
Контактная информация:

Сообщение Gera »

Положение Toolbar в окне задается в атрибутах окна, в котором этот Toolbar находится. Либо в атрибутах интерфейса, если Toolbar находится в главном окне.

Для этого используются атрибуты окна: LeftToolbar, RightToolbar, TopToolbar (по умолчанию), DownToolbar.

Например:

Код: Выделить всё

// Для окна
Window TestWindToolbar 'Тест Тулбара' EscClose, DoAccept, LeftToolbar;

// Для главного окна (интерфейса)
Interface PatEditor LeftToolbar;
Gera
топ-софт
Сообщения: 97
Зарегистрирован: Пн, 24/09/2007 17:53
Имя Фамилия: Юрий Герман
Откуда: ТопСофт
Контактная информация:

Сообщение Gera »

А по поводу работы ShowToolButtonEx имеет смысл задать вопрос технической поддержке.

Для информации (может быть поможет самостоятельно найти ответ):

Функция ShowToolButtonEx

Назначение
Функция устанавливает атрибуты кнопок пользовательской инструментальной панели.

Описание
function ShowToolButtonEx(
toolBarID : longInt;
buttonName : string;
flags : word
) : word

Параметры

toolBarID : longint - идентификатор инструментальной панели. Переменная типа longInt объявленная и проинициализированная до использования (см. LoadToolBarEx).
buttonName : string - название кнопки атрибуты которой меняются.
flags : word - комбинация следующих битовых флагов:

TB_GETSTATE - запрос текущих параметров без изменения состояния кнопки.
TB_SHOW - показать (при выставленном флаге) или скрыть кнопку.
TB_ENABLE - разрешить или запретить кнопку. Параметр установится если присутствует или раннее был установлен флаг TB_MANUALENABLE.
TB_MANUALENABLE - устанавливает ручное (то есть только этой функцией) управление разрешением /запрещением кнопки. Функции типа EnableCommand для данной кнопки будут проигнорированы.
TB_CHECKED - устанавливает /снимает эффект нажатой кнопки.

Возвращаемое значение
Состояние флага TB_SHOW (установлен /сброшен) - если при вызове использовался флаг TB_GETSTATE.
Предыдущее состояние флага TB_SHOW (установлен /сброшен) - если флаг TB_GETSTATE при вызове не использовался.
Ged
топ-софт
Сообщения: 76
Зарегистрирован: Вс, 16/09/2007 10:23
Имя Фамилия: Леонид Поликутин
Откуда: Галактика СПб
Контактная информация:

Сообщение Ged »

Павел Полухин писал(а):и так, прошло 12 дней, грубо говоря пол месяца....
Никто и не заявлял что ответ будет сиеминутный. :)

PS:
в своем фейсе ты явно указал используемый ToolBar "toolbar ZyavkaToolBar;"

а LoadToolBarEx используется для интеративной подгрузки.

думаю методом проб и ошибок (если не хватает документации) большинство проблем все таки можно решить, если конечно не лениться и не ждать посыла с неба.
PViP
партнер
Сообщения: 71
Зарегистрирован: Пт, 19/10/2007 11:38
Имя Фамилия: Павел Полухин
Откуда: Галактика-Красноярск
Контактная информация:

Сообщение PViP »

Юрий Герман, если просто указать тулбар "toolbar ZyavkaToolBar;", тогда вызывается исключение, пока подгрузку LoadToolBarEx не сделаешь , ошибка не уходит! Да и как тогда без подгрузки получить дескриптор toolBarID : longint для функции LoadToolBarEx?

Юрий Герман >>Для информации (может быть поможет самостоятельно найти ответ):
не поверете... у меня тоже есть документация! :lol: (первый пост читайте)

Леонид Поликутин >>думаю методом проб и ошибок (если не хватает документации) большинство проблем все таки можно решить, если конечно не лениться и не ждать посыла с неба.

обижаете.... ворпрос про разделитель остался открытым!!!
Ged
топ-софт
Сообщения: 76
Зарегистрирован: Вс, 16/09/2007 10:23
Имя Фамилия: Леонид Поликутин
Откуда: Галактика СПб
Контактная информация:

Сообщение Ged »

Это разделитель между двумя тулбарами, в каждом из которых
объеденены инструментальные средства близкие по смыслу.


interface ifcMakeZayavka 'Заявки' sci3InsPMcIns), cyan;
show at (,,100,30);
toolbar
ZyavkaToolBar
, ZyavkaToolBar
, ZyavkaToolBar;

Вот и получите разделитель.

И в доке это есть.
Использование ToolBar'а

Ссылка на ToolBar:

toolBar ([<компонент>::]<название> | '<название>')
[, ([<компонент>::]<название> | '<название>')];
[<компонент>::]<название> - идентификатор существующего и описанного до или после ссылки ToolBar'а. При поиске соответствующего ToolBar'а при загрузке программы сначала ищутся локальные ToolBar'ы, а затем глобальные. Если <компонент> не задан, инструментальная панель ищется в текущем компоненте. Опция <компонент> введена начиная с Атлантис 5.1.25.
PViP
партнер
Сообщения: 71
Зарегистрирован: Пт, 19/10/2007 11:38
Имя Фамилия: Павел Полухин
Откуда: Галактика-Красноярск
Контактная информация:

Сообщение PViP »

Леонид Поликутин, вашими бы устами доку писать ;-) ! Спасибо за расшифровку!
Ответить