botva2

DLL botva2 0.9.9.156

Нет прав для скачивания
  • Автор темы Автор темы South
  • Дата начала Дата начала
Приветствую всех. Очень прошу рассказать/описать, желательно в подробностях и с примером, как реализовать вот эту процедуру в ботве procedure Botva2_CreateFormFromImage(h:HWND; FileName:PAnsiChar); external 'CreateFormFromImage@{tmp}\botva2.dll stdcall delayload'; Я же правильно понимаю, что из любой Png картинки можно сделать свою форму? Расскажите пожалуйста, заранее премного благодарен.
 
Да правильно. Но на CreateFormFromImage не отображаются кнопки(не стандартные)\чекбоксы\вроде и панели и т.п. Есть плюс можно создать плавную тень по краям. Так что подумайте нужно ли это использовать. Не знаю зачем я тут все расписываю, тут и так ничего сложного нет. Но может кому пригодится.
Код:
[Setup]
    AppName=My Application                                      ;  Имя Программы            
    AppVersion=1.5                                              ;  Версия программы                                                      
    DefaultDirName={sd}\My Application                          ;  Директория установки по умолчанию

[Files]
    Source: InstallFiles\*; Flags: dontcopy sortfilesbyextension

[Code]
    #include "Modules\description.iss"                          ;  Подключаем модуль description
    #include "Modules\botva2.iss"                               ;  Подключаем модуль botva2

function InitializeSetup(): Boolean;                            // Процедура подготовки к созданию инсталлятора                              
begin                                                           // Начало
    ExtractTemporaryFile('botva2.dll');                         // Выгружаем dll во временную папку
    ExtractTemporaryFile('CallbackCtrl.dll');                   // Выгружаем dll во временную папку
    ExtractTemporaryFile('background.png');                     // Выгружаем png во временную папку
    Result:=True;                                               // Результат := Правда ХD
end;                                                            // Конец

procedure InitializeWizard();                                   // Процедура создания инсталлятора
begin                                                           // Начало
  with WizardForm do begin                                      // WizardForm начало                                      
    Position:=poScreenCenter;                                   // Позиция := центр экрана
    BorderStyle:=bsNone;                                        // Стиль := нет
    ClientWidth:=360;                                           // Ширина := ХХХ
    ClientHeight:=500;                                          // Высота := ХХХ
    InnerNotebook.Hide;                                         // Скрыть := InnerNotebook
    OuterNotebook.Hide;                                         // Скрыть := OuterNotebook
    Bevel.Hide;                                                 // Скрыть := Bevel.
    NextButton.Width:=0;                                        // Ширина кнопки Далее :=
    BackButton.Width:=0;                                        // Ширина кнопки Назад :=
    CancelButton.Width:=0;                                      // Ширина кнопки Отмена :=
    OnMouseDown:=@WizardFormOnMouseDown;                        // Выполнение процедуры WizardFormOnMouseDown при зажатии кнопки мыши на окне
end;                                                            // Конец
    CreateFormFromImage(WizardForm.Handle,'background.png');    // Выполнение процедуры CreateFormFromImage(Окно,'Файл.формат');
    ImgApplyChanges(WizardForm.Handle);                         // Выполнить отрисовку графики(Окно);      
end;                                                            // Конец

procedure DeinitializeSetup;                                    // Процедура закрытия инсталлятора
begin                                                           // Начало
    WizardForm.Visible:=False;                                  // Видимость_окна_WizardForm := нет
    gdipShutDown;                                               // Выгружаем процесс botva2
end;                                                            // Конец
 

Вложения

Последнее редактирование:
Ребят, а имеется ли возможность использовать скроллбар, создаваемый через модуль CheckListBox.iss для других компонентов, например, для заменены стандартного скроллбара? Или же у него жесткая привязка к создаваемым панелям?
 
Здравствуйте, не подскажете, есть ли возможность при клике на кнопке сделать смещение текста вниз, а не направо? Спасибо!
 
Как исправить этот баг? На Win7 норм, а вот на XP:
fcd6375a278b7863dd405f573aa11781.png
33d33dcd216f048c9ad265fb149bec2f.png

0f0f1483f4669532d55a8f8ce3dc02ca.png
 
Последнее редактирование:
Всем привет. Кто объяснит пожалуйста как в зависимости от скачанного архива сделать тот или иной компонент активным (в моем случае их всего 2). Вот код (обычный, ничего не проверяет), я попытался пару раз сделать но видимо не в то место я это делал:

Код:
function RusText: boolean;
begin
  Result := not IsDoneError and BtnGetChecked(LanguageTextButton[1]);
end;

function EngText: boolean;
begin
  Result := not IsDoneError and BtnGetChecked(LanguageTextButton[2]);
end;

procedure SelectLanguageText(hBtn:HWND);
begin
  BtnSetChecked(hBtn,True);
  if hBtn=LanguageTextButton[1] then begin
  BtnSetChecked(LanguageTextButton[2],False);
  end else begin
  BtnSetChecked(LanguageTextButton[1],False);
  end;
end;

procedure LanguageText1LabelClick(Sender:TObject);
begin
  BtnSetChecked(LanguageTextButton[1], not BtnGetChecked(LanguageTextButton[1]));
  SelectLanguagetext(LanguageTextButton[1]);
end;

procedure LanguageText2LabelClick(Sender:TObject);
begin
  BtnSetChecked(LanguageTextButton[2], not BtnGetChecked(LanguageTextButton[2]));
  SelectLanguagetext(LanguageTextButton[2]);
end;

. . .

RusTextLabel:= TLabel.Create(WizardForm);
  with RusTextLabel do begin
  . . .
  OnClick := @LanguageText1LabelClick;
  Caption:=ExpandConstant('{cm:rus}');
  end;

EngTextLabel:= TLabel.Create(WizardForm);
  with EngTextLabel do begin
  . . .
  OnClick := @LanguageText2LabelClick;
  Caption:=ExpandConstant('{cm:eng}');
  end;

Буду очень благодарен.
 
makst,
Код:
if FileExists(ExpandConstant('{src}\Russian.bin')) then BtnSetEnabled(LanguageTextButton[1], True) else BtnSetEnabled(LanguageTextButton[1], False);
if FileExists(ExpandConstant('{src}\English.bin')) then BtnSetEnabled(LanguageTextButton[2], True) else BtnSetEnabled(LanguageTextButton[1], False);
 
Timick, вот я так сделал:

Код:
if FileExists(ExpandConstant('{src}\imagefile-rus.rvn')) and FileExists(ExpandConstant('{src}\imagefile-eng.rvn')) then BtnSetChecked(LanguageTextButton[1], True) else
if FileExists(ExpandConstant('{src}\imagefile-rus.rvn')) and not FileExists(ExpandConstant('{src}\imagefile-eng.rvn')) then BtnSetChecked(LanguageTextButton[1], True) else
if FileExists(ExpandConstant('{src}\imagefile-eng.rvn')) and not FileExists(ExpandConstant('{src}\imagefile-rus.rvn')) then BtnSetChecked(LanguageTextButton[2], True);

Все работает но желательно чтобы другой компонент заблокировался (т.е чтобы не было возможности его выбрать)? Если это возможно конечно. Спасибо.
 
Код:
Rus:= FileExists(ExpandConstant('{src}\imagefile-rus.rvn'));
Eng:= FileExists(ExpandConstant('{src}\imagefile-eng.rvn'));

if Rus and Eng then BtnSetChecked(LanguageTextButton[1], True) else
if Rus and not Eng then begin BtnSetChecked(LanguageTextButton[1], True); BtnSetChecked(LanguageTextButton[2], False); end else
if not Rus and Eng then begin BtnSetChecked(LanguageTextButton[2], True); BtnSetChecked(LanguageTextButton[1], False) end;

Проверь как всё работает. Вдруг где ошибся
 
Timick, спасибо но это не то. Я по-прежнему могу выбрать любой из них. Или я не правильно поставил вопрос?

Всё, сделал. Блин, вот что значит не смотреть примеры.

Использовал BtnSetEnabled.
 
Последнее редактирование:
makst, ой да, конечно, там должна быть процедура BtnSetEnabled...
Вот что бывает, когда пытаешься кому-то помочь, сидя на уроке информатики :facepalm::rofl:

Код:
Rus:= FileExists(ExpandConstant('{src}\imagefile-rus.rvn'));
Eng:= FileExists(ExpandConstant('{src}\imagefile-eng.rvn'));

if Rus and Eng then BtnSetChecked(LanguageTextButton[1], True) else
if Rus and not Eng then begin BtnSetChecked(LanguageTextButton[1], True); BtnSetEnabled(LanguageTextButton[2], False); end else
if not Rus and Eng then begin BtnSetChecked(LanguageTextButton[2], True); BtnSetEnabled(LanguageTextButton[1], False) end;
 
Ребят, а имеется ли возможность использовать скроллбар, создаваемый через модуль CheckListBox.iss для других компонентов, например, для заменены стандартного скроллбара? Или же у него жесткая привязка к создаваемым панелям?
скроллбар из CheckListBox.iss "прокручивает" панель созданную в этом же примере, т.е. это полностью самопальная фигня, соответственно к стандартным компонентам такой скролл не прикрутить. точнее прикрутить, наверное, можно, но геморно. для каждого компонента свой индивидуальный код писать придется

Здравствуйте, не подскажете, есть ли возможность при клике на кнопке сделать смещение текста вниз, а не направо? Спасибо!
такой возможности нету, смещение текста релизовано внутри длл
 
Думал, что у кого-нибудь здесь есть доступ к исходникам... Спасибо за ответ!
 
скроллбар из CheckListBox.iss "прокручивает" панель созданную в этом же примере, т.е. это полностью самопальная фигня, соответственно к стандартным компонентам такой скролл не прикрутить. точнее прикрутить, наверное, можно, но геморно. для каждого компонента свой индивидуальный код писать придется
Конкретно интересует применение скроллбара к созданному TTreeView на CustomForm. Порыскал в тырнетах - можно, конечно, попробовать отлавливать события и передавать на созданные картинки, но говорят - тоже тот еще геморрой.
Пока выглядит так - но это же коряво :sorry:
46589c8da8[1].png
 
можно, конечно, попробовать отлавливать события и передавать на созданные картинки
со стандартными компонентами только так и ни как иначе, точнее передача сообщений компоненту при наступлении неких событий
еще вариант - полностью свой компонент, тогда делай скроллбар как тебе нравится :)
 
Последнее редактирование:
Прошу прощения, возможно плохо искал но не нашел. Подскажите как через ботву сделать красивый ComboBox ?
 
Назад
Сверху