botva2

DLL botva2 0.9.9.156

Нет прав для скачивания

FalconRR

Мимокрокодил
Приветствую всех. Очень прошу рассказать/описать, желательно в подробностях и с примером, как реализовать вот эту процедуру в ботве procedure Botva2_CreateFormFromImage(h:HWND; FileName:pAnsiChar); external 'CreateFormFromImage@{tmp}\botva2.dll stdcall delayload'; Я же правильно понимаю, что из любой Png картинки можно сделать свою форму? Расскажите пожалуйста, заранее премного благодарен.
 

Nemko

Дилетант
Модератор
Да правильно. Но на 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;                                                            // Конец
 

Вложения

Последнее редактирование:

zavul0n

Новичок
Ребят, а имеется ли возможность использовать скроллбар, создаваемый через модуль CheckListBox.iss для других компонентов, например, для заменены стандартного скроллбара? Или же у него жесткая привязка к создаваемым панелям?
 

Faktor82

Мимокрокодил
Здравствуйте, не подскажете, есть ли возможность при клике на кнопке сделать смещение текста вниз, а не направо? Спасибо!
 

Хамик

Старожил
Как исправить этот баг? На Win7 норм, а вот на XP:

 
Последнее редактирование:

makst

Новичок
Всем привет. Кто объяснит пожалуйста как в зависимости от скачанного архива сделать тот или иной компонент активным (в моем случае их всего 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;
Буду очень благодарен.
 

Timick

Старожил
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);
 

makst

Новичок
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);
Все работает но желательно чтобы другой компонент заблокировался (т.е чтобы не было возможности его выбрать)? Если это возможно конечно. Спасибо.
 

Timick

Старожил
Код:
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;
Проверь как всё работает. Вдруг где ошибся
 

makst

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

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

Использовал BtnSetEnabled.
 
Последнее редактирование:

Timick

Старожил
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;
 

South

Знаток
Проверенный
Ребят, а имеется ли возможность использовать скроллбар, создаваемый через модуль CheckListBox.iss для других компонентов, например, для заменены стандартного скроллбара? Или же у него жесткая привязка к создаваемым панелям?
скроллбар из CheckListBox.iss "прокручивает" панель созданную в этом же примере, т.е. это полностью самопальная фигня, соответственно к стандартным компонентам такой скролл не прикрутить. точнее прикрутить, наверное, можно, но геморно. для каждого компонента свой индивидуальный код писать придется

Здравствуйте, не подскажете, есть ли возможность при клике на кнопке сделать смещение текста вниз, а не направо? Спасибо!
такой возможности нету, смещение текста релизовано внутри длл
 

Faktor82

Мимокрокодил
Думал, что у кого-нибудь здесь есть доступ к исходникам... Спасибо за ответ!
 

zavul0n

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

South

Знаток
Проверенный
можно, конечно, попробовать отлавливать события и передавать на созданные картинки
со стандартными компонентами только так и ни как иначе, точнее передача сообщений компоненту при наступлении неких событий
еще вариант - полностью свой компонент, тогда делай скроллбар как тебе нравится :)
 
Последнее редактирование:

Аким

Новичок
Прошу прощения, возможно плохо искал но не нашел. Подскажите как через ботву сделать красивый ComboBox ?
 
Сверху