Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Переделать код Delphi на C++Builder

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

MagistrAnatol



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Добрый день.
Помогите переделать код с делфи на с++

Код:
unit Forms.Main;
......
procedure TMainForm.ShowActionExecute(Sender: TObject);
begin
  FMaterialButtonInfo.Frame.OnClick :=
    procedure
    begin
      ShowMessage('This is my message!');
    end;
end;
 


Код:
 
unit Frames.MaterialButton;
type
...
  private
    FOnClick: TProc;
  public
 
    property OnClick: TProc read FOnClick write FOnClick;
  end;
 
implementation
 
{$R *.fmx}
 
procedure TMaterialButtonFrame.Circle1Click(Sender: TObject);
begin
  if Assigned(FOnClick) then
    FOnClick();
end;
end.
 

 
 
Добавлено:
И еще- как передать обработчик через анонимную функцию
*.h

Код:
private:    // User declarations
    TNotifyEvent FOnClick;
public:        // User declarations
    __fastcall TForm2(TComponent* Owner);
    __property System::Classes::TNotifyEvent OnClick = {read=FOnClick, write=FOnClick};
 

*.cpp

Код:
    Form2->OnClick  =  [](System::TObject *Sender)->TNotifyEvent { ShowMessage("Clicked"); };

получаю ошибку
[bcc32c Error] Unit1.cpp(33): assigning to 'System::Classes::TNotifyEvent' (aka 'void ((__closure *))(System::TObject *) __attribute__((fastcall))') from incompatible type '(lambda at Unit1.cpp:33:21)'

Всего записей: 2120 | Зарегистр. 09-04-2003 | Отправлено: 13:55 18-08-2022
useretail



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Код:
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
 
    switch (uMsg) {
        case WM_CREATE:
            {
                CreateWindow(TEXT("Button"), TEXT("Click me"), WS_VISIBLE | WS_CHILD, x, y, width, height, hwnd, (HMENU) 1, NULL, NULL);
                break;
            }
        case WM_COMMAND:
            if (LOWORD(wParam) == 1)
                MessageBox(hwnd, "This is my message!", NULL, NULL);
            break;
    }
}

так что-ли? я в делфях не силен

Всего записей: 4615 | Зарегистр. 14-09-2007 | Отправлено: 23:58 18-08-2022
MBK2

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
http://ivan.vecerina.com/code/delphi2cpp/

Всего записей: 4556 | Зарегистр. 18-09-2018 | Отправлено: 08:06 19-08-2022
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Переделать код Delphi на C++Builder


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru