Instalacja komponentu z Delphi w Lazarusie

Instalacja komponentu z Delphi w Lazarusie
axel234
  • Rejestracja:prawie 18 lat
  • Ostatnio:dzień
0

Panowie i Panie

Mam komponent napisany dla Delphi. To komponent służący do dynamicznego resizingu formy i wszystkich elementów na formie. W Delphi instaluję go bez problemu, działa.
Zastanawiam się czy byłaby możliwość zainstalowania go w Lazarusie, po jakiejś ewentualnej konwersji?
Zaczynam bawić się Lazarusem i nie do końca potrafię się tam odnaleźć w kwestii instalacji komponentów. Zwłaszcza tych dla Delphi.
Być może ktoś pokierowałby mnie krok po kroku co należy zrobić jeśli jest to w ogóle możliwe?

Link do komponentu:
http://www.delphi32.com/vcl/1289/

flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 9 godzin
  • Lokalizacja:Tuchów
  • Postów:12175
0

Zastanawiam się czy byłaby możliwość zainstalowania go w Lazarusie, po jakiejś ewentualnej konwersji?

No to nie zastanawiaj się i spróbuj go zainstalować...

Nie wiem w jakiej postaci masz ten komponent, czy jest on gołym plikiem .pas czy może paczką .dpk - nie napisałeś. W każdym razie utwórz sobie pustą paczkę, nazwij ją sensownie i zapisz gdzieś na dysku. Dodaj do niej nowy moduł i też nazwij go sensownie i zapisz go na dysku. Otwórz moduł komponentu z Delphi i przeklej kod z sekcji interface oraz implementation do modułu dla Lazarusa.

Jeśli kod kontrolki koniecznie musi być możliwy do skompilowania w obu tych środowiskach to zamień dyrektywę {$MODE OBJFPC} na {$MODE DELPHI}, a jeśli nie musi to nie zmieniaj jej. Przekompiluj paczkę - jeśli wyskoczą błędy to znaczy, że coś trzeba będzie poprawić. Mniejsza szansa na błędy będzie wtedy, gdy użyjesz dyrektywy {$MODE DELPHI}.

W razie błędów pisz - podaj treść błędu i linijkę w której występuje, dla każdego problemu z osobna. O ile faktycznie błędy wystąpią, bo nie jest wykluczone, że portowanie pójdzie gładko.


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 2x, ostatnio: flowCRANE
PW
  • Rejestracja:ponad 9 lat
  • Ostatnio:5 miesięcy
  • Postów:130
0

Może zamieść źródła do tego komponentu w wątku, bo link jaki podałeś troche jakiś taki nie bardzo jest...

flowCRANE
Sądziłem, że to wina mojej przeglądarki - a jednak nie, strona faktycznie jest pusta.
axel234
  • Rejestracja:prawie 18 lat
  • Ostatnio:dzień
0

Faktycznie, coś z tą stroną jest nie tak.

Wrzuciłem wszystkie pliki komponentu do załącznika do tego postu (10 plików, kilkanaście KB).

Próbuję to zainstalować w Lazarusie, ale chyba do czasu aż ktoś mi nie napisze krok po kroku, gdzie kliknąć itp, to tego nie ogarnę.

Załącznik.

edytowany 2x, ostatnio: flowCRANE
Zobacz pozostały 1 komentarz
flowCRANE
No i gdzie ten załącznik?
axel234
Teraz jest ok.
axel234
Spróbujecie to zainstalować u siebie?
flowCRANE
Mam kilka dni odpoczynku od programowania, bo matryca mi padła, więc nie sprawdzę.
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 9 godzin
  • Lokalizacja:Tuchów
  • Postów:12175
0

@axel234: spróbuj sam przenieść ten kod - toż to nic trudnego.

W sumie to nie musisz tworzyć modułów i kopiować kodu - wystarczy, że utworzysz pustą paczkę i dodasz do niej pliki .pas ze źródłami z Delphi oraz zamienisz w nich dyrektywy {$APPTYPE GUI} na {$MODE OBJFPC} lub {$MODE DELPHI}. Tyle wystarczy, bo Lazarus oprócz plików .pp obsługuje również pliki .pas.


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 2x, ostatnio: flowCRANE
axel234
  • Rejestracja:prawie 18 lat
  • Ostatnio:dzień
0

Tworzę nową paczkę, dodaję do niej plik easysize.pas (wśród plików tylko ten ma rozszerzenie .pas), następnie otwieram go i szukam {$APPTYPE GUI}, tak? Jeśli tak, to nie ma tam czegoś takiego.
Jest tam:

Kopiuj
{$IFDEF WIN32}
{$R Easysize.d32}
{$ELSE}
{$R Easysize.d16}
{ENDIF}

No i do tego cała lista procedur.

W złym miejscu szukam?

edytowany 1x, ostatnio: axel234
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 9 godzin
  • Lokalizacja:Tuchów
  • Postów:12175
0

No nie ma nic takiego, bo to nie aplikacja okienkowa - źle napisałem, nie byłem w formie....

Nie szukaj żadnych dyrektyw - po prostu dodaj ten moduł do listy modułów w ustawieniach paczki i przekompiluj ją, za pomocą przycisku Compile lub opcji More >> Recompile clean. Jeśli kompilacja nie uda się to pisz w czym problem.


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 1x, ostatnio: flowCRANE
axel234
  • Rejestracja:prawie 18 lat
  • Ostatnio:dzień
0

Kompilacja wywala się już na początku na USES.
Te rzeczy z gwiazdkami, to te, na których kompilacja się wywala.

Kopiuj
uses **WinTypes**, **WinProcs**, Messages, SysUtils, Classes **Controls**,
     **Forms**, **Graphics**, **StdCtrls**;  

Przykładowy komunikat:
Easysize.pas(24,6) Fatal: Cannot find WinTypes used by Easysize of package Nowy_Pakiet.

edytowany 1x, ostatnio: axel234
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 9 godzin
  • Lokalizacja:Tuchów
  • Postów:12175
0

http://forum.lazarus.freepascal.org/index.php?topic=14072.0

marcov:

WinProc and Wintype are units from Windows 3.1x. In Win9x and later these are replaced by unit Windows.

Delphi allows some aliases for backwards compatibility from winproc and wintypes to Windows.
FPC never supported Windows 3.1x, and for FPC the issue came up nearly a decade after this transition, so these aliases were never implemented.

So in summary, simply use unit Windows.


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
KA
  • Rejestracja:prawie 20 lat
  • Ostatnio:minuta
  • Lokalizacja:Gorlice
1

Łap gotowca na Lazarus


Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.
axel234
  • Rejestracja:prawie 18 lat
  • Ostatnio:dzień
0

Kazek dzięki za pliki. Jest postęp, bo paczka się kompiluje, ale tak jak pisałem, że w Delphi instaluję ten komponent w 10 sekund, tak w Lazarusie mam z zainstalowaniem komponentu.
@kAzek czy instalowałeś może ten komponent u siebie? Jeśli tak, to czy masz jakąś instrukcję krok po kroku jak to zainstalować? Korzystałem z instrukcji z sieci, ale zawsze dochodziłem do któregoś momentu, z którego nie mogłem ruszyć dalej.

Krok po kroku robię tak:

  • package -> open package file (.lpk) i otwieram resizer.lpk z plików, które podesłałeś

Następnie otwiera mi się okienko nowego pakietu.

Klikam Add Files i dodaję do listy plik Easysize.pas

Następnie kompiluję. Nie pojawiają się żadne błędy - czyli jest lepiej niż poprzednio.

No dobra, ale co dalej?

Kliknąć Add -> Nowy komponent? Jeśli tak, to co wpisać w oknie nowego komponentu? Co wybrać z listy "Typ przodka"? Jak wypełnić pozostałe pola?

A może nie klikać Add -> Nowy komponent?

Czy ktoś na tym forum, ma jakąś czytelną instrukcję instalacji komponentów w Lazarusie? Taką konkretną, krok po kroku?

flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 9 godzin
  • Lokalizacja:Tuchów
  • Postów:12175
1

@axel234: Lazarus póki co nie wspiera dynamicznego dołączania komponentów do środowiska (nie pamiętam jak się to fachowo nazywa), więc instalacja nie wygląda tak jak w Delphi.

Aby zainstalować komponent (czyli wkompilować paczkę do środowiska), musisz otworzyć sobie paczkę w środowisku, w oknie z jej zawartością kliknąć w przycisk Use >>, z rozwiniętego menu kontekstowego wybrać opcję Install oraz w okienku dialogowym potwierdzić chęć instalacji. Tu ważna rzecz - instalacja paczki jest równoznaczna z rekompilacją całego IDE, więc może to potrwać kilkadziesiąt sekund (na moim staruszku trwa to mniej więcej 15 sekund).

Po zakończeniu kompilacji, środowisko zrestartuje się i na palecie komponentów będzie już dostępny Twój komponent (albo kilka, jeśli w instalowanej paczce masz ich więcej). Nic trudnego - nie ma się czego bać.


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 5x, ostatnio: flowCRANE
axel234
  • Rejestracja:prawie 18 lat
  • Ostatnio:dzień
0

Jak klikam Use -> Install to pojawia mi się komunikat z załącznika. Tak ma być? Jeśli tak, to co dalej?

komunikat.png

EDIT
Ok Panowie. Działa. Problem z komunikatem, o którym pisałem zniknął, kiedy w okienku z zawartością paczki, zaptaszkowałem pole Register, które domyślnie nie było zaptaszkowane. Po tej czynności i kliknięciu Use -> Install, komunikat z załącznika się już nie pojawił i komponent zainstalował się poprawnie. Działa. Kuźwa, prawie dwa dni boksowania się z nim, ale fajnie, że się udało, bo jest naprawdę przydatny czasami.

Dzięki wielkie za pomoc Panowie. Jestem waszym dłużnikiem.

edytowany 7x, ostatnio: axel234
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 9 godzin
  • Lokalizacja:Tuchów
  • Postów:12175
0

Takie okienko pojawia się, jeśli próbujesz zainstalować paczkę, która nie zawiera komponentu (brak procedury Register). Dlatego też Lazarus informuje, że jej instalacja spowoduje głównie spuchnięcie środowiska i nic więcej (treść przycisku Install it, I like the fat jest śmieszna). To nie jest błąd, a zwykłe ostrzeżenie - czytaj ze zrozumieniem. Jeżeli Twoja paczka nie zawiera żadnych komponentów i tak ma być to wszystko gra.

Moją paczkę z API dla TreeStructInfo też można doinstalować do IDE, choć nie zawiera żadnych komponentów. Można z niej korzystać na różne sposoby, ale instalacja też jest możliwa - tylko i wyłącznie po to, aby możliwe było wykorzystywanie drzew mojego formatu do budowy komponentów (z czego sam namiętnie korzystam).


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
KA
  • Rejestracja:prawie 20 lat
  • Ostatnio:minuta
  • Lokalizacja:Gorlice
0

Nie instalowałem bo nie chce mi sie przenudowywać lazarusa ale żeby korzystać wystarczy w
Project -> Project Inspector...
prawym Required Packages -> Add wybrać resizer i Crate New Requirement
i do uses Easysize i w private zadeklarować fFormResizer: TFormResizer;
i utworzyć dynamicznie

Kopiuj
procedure TForm1.FormCreate(Sender: TObject);
begin
  //nie zwalnia sie go ma wlasciciela Form to on odpowiada za zwolnienie inaczej SIGSEGV
  fFormResizer:= TFormResizer.Create(Self);
  fFormResizer.ResizeFonts:= True;
  fFormResizer.InitializeForm;
end;

procedure TForm1.FormResize(Sender: TObject);
begin
  fFormResizer.ResizeAll;
end;  

Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.
edytowany 1x, ostatnio: kAzek

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.