Delphi zu Lazarus
-
- Beiträge: 465
- Registriert: Sa 21. Aug 2010, 21:30
- OS, Lazarus, FPC: Windows 7 Ultimate (L 1.2.2 FPC 2.6.4 32-bit)
- CPU-Target: 64-Bit
- Wohnort: nahe Bremen
- Kontaktdaten:
Delphi zu Lazarus
ich habe jetzt beim googlen das hier gefunden:
http://www.delphi-treff.de/tipps/grafik ... -desktops/
was muss ich denn jetzt machen(speziell für den fall aber auch allgemein) damit das geht
http://www.delphi-treff.de/tipps/grafik ... -desktops/
was muss ich denn jetzt machen(speziell für den fall aber auch allgemein) damit das geht
www.mcpatcher.net | www.hoeper.me
Re: Delphi zu Lazarus
http://wiki.lazarus.freepascal.org/Deve ... _erstellen" onclick="window.open(this.href);return false;
-
- Beiträge: 465
- Registriert: Sa 21. Aug 2010, 21:30
- OS, Lazarus, FPC: Windows 7 Ultimate (L 1.2.2 FPC 2.6.4 32-bit)
- CPU-Target: 64-Bit
- Wohnort: nahe Bremen
- Kontaktdaten:
Re: Delphi zu Lazarus
danke
aber:

das kann ich mir nicht so ganz erklären...
aber:

das kann ich mir nicht so ganz erklären...
www.mcpatcher.net | www.hoeper.me
Re: Delphi zu Lazarus
Nimm die unit "windows" aus der uses, und dafür die hier rein: uses LCLIntf, LCLType; wie's da steht.
-
- Beiträge: 465
- Registriert: Sa 21. Aug 2010, 21:30
- OS, Lazarus, FPC: Windows 7 Ultimate (L 1.2.2 FPC 2.6.4 32-bit)
- CPU-Target: 64-Bit
- Wohnort: nahe Bremen
- Kontaktdaten:
Re: Delphi zu Lazarus
also das ist bei uses:
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
ExtCtrls, Menus, StdCtrls, Windows, Messages, LCLIntf, LCLType, ublack, unit_test;
ich glaube aber ich brauche windows noch woanders für oder nicht?
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
ExtCtrls, Menus, StdCtrls, Windows, Messages, LCLIntf, LCLType, ublack, unit_test;
ich glaube aber ich brauche windows noch woanders für oder nicht?
www.mcpatcher.net | www.hoeper.me
Re: Delphi zu Lazarus
Das siehst du ja, wenn du's wegmachst. Wenn's ohne kompiliert nicht.Bauer321 hat geschrieben: ich glaube aber ich brauche windows noch woanders für oder nicht?
Sonst nimm es an den Anfang der Liste, jedenfalls vor Graphics.
-
- Lazarusforum e. V.
- Beiträge: 3178
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: Delphi zu Lazarus
Die Unit Windows brauchst du nur, wenn du Windows-spezifische API-Funktionen direkt verwenden willst. Die oben genannten Units der LCL stellen einen Großteil dessen bereit, was Delphi ebenfalls in der Unit Windows implementierte.Bauer321 hat geschrieben:ich glaube aber ich brauche windows noch woanders für oder nicht?
Ansonsten wird ein anderer Teil der Win-API auch über TWidgetset für jedes einzelne Widgetset implementiert (Zugriff über InterfaceBase.WidgetSet).
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
-
- Beiträge: 465
- Registriert: Sa 21. Aug 2010, 21:30
- OS, Lazarus, FPC: Windows 7 Ultimate (L 1.2.2 FPC 2.6.4 32-bit)
- CPU-Target: 64-Bit
- Wohnort: nahe Bremen
- Kontaktdaten:
Re: Delphi zu Lazarus
doch brauche ich... aber damit bin ich jetzt noch kein stück weiter...theo hat geschrieben:Das siehst du ja, wenn du's wegmachst. Wenn's ohne kompiliert nicht.Bauer321 hat geschrieben: ich glaube aber ich brauche windows noch woanders für oder nicht?
Sonst nimm es an den Anfang der Liste, jedenfalls vor Graphics.
www.mcpatcher.net | www.hoeper.me
Re: Delphi zu Lazarus
Das glaube ich dir nicht.Bauer321 hat geschrieben:aber damit bin ich jetzt noch kein stück weiter...
-
- Beiträge: 475
- Registriert: Do 15. Nov 2007, 16:58
- OS, Lazarus, FPC: Win11/Ubuntu Budgie (L 3.0 FPC 3.2.2)
- CPU-Target: i386, x64
- Wohnort: Gera
Re: Delphi zu Lazarus
Ich kann nur sagen, Theos Link läuft bei mir, mit kleinen Änderungen, unter Ubuntu 64bit und WinXP 32bit.
Code: Alles auswählen
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
LCLIntf, LCLType, Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
var
MyBitmap: TBitmap;
ScreenDC: HDC;
begin
MyBitmap := TBitmap.Create;
ScreenDC := GetDC(0);
MyBitmap.LoadFromDevice(ScreenDC);
ReleaseDC(0, ScreenDC);
MyBitmap.SaveToFile('test.bmp');
end;
end.
mfg Ingo
-
- Beiträge: 465
- Registriert: Sa 21. Aug 2010, 21:30
- OS, Lazarus, FPC: Windows 7 Ultimate (L 1.2.2 FPC 2.6.4 32-bit)
- CPU-Target: 64-Bit
- Wohnort: nahe Bremen
- Kontaktdaten:
Re: Delphi zu Lazarus
das ist der komplette quellcode aber es geht leider nicht...
auch wenn ich dem einen key zuweise und es dann direkt und if key =1 ... mache dann kommen die selben fehler!
Code: Alles auswählen
unit uhotkey;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
ExtCtrls, Menus, Windows, Messages, StdCtrls, LCLIntf, LCLType,
ublack, unit_test;
type
TWndProc = Windows.WNDPROC;
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
buttonsreenshot: TButton;
Image1: TImage;
Memo1: TMemo;
MenuItem1: TMenuItem;
MenuItem2: TMenuItem;
MenuItem3: TMenuItem;
MenuItem4: TMenuItem;
MenuItem5: TMenuItem;
Notebook1: TNotebook;
sreenshot: TPage;
phelp: TPage;
TrayMenu: TPopupMenu;
TrayIcon1: TTrayIcon;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure buttonsreenshotClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormWindowStateChange(Sender: TObject);
procedure HotKeyPressed(Key : Long_Ptr); // auf DIESE Deklaration kam es an
procedure MenuItem1Click(Sender: TObject);
procedure MenuItem2Click(Sender: TObject);
procedure MenuItem3Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
PrevWndProc : Long_ptr;
implementation
{$R *.lfm}
//die funktion braucht man: function BlockInput (fBlockInput : boolean) : DWord; stdcall; external 'user32.DLL'; //das muss woanders hin: BlockInput(true);
procedure TForm1.HotKeyPressed(Key : Long_Ptr);
begin
if ( int(Key) = 1 ) then begin
// Deine Hotkeyverarbeitung ....
close;
end;
if ( int(Key) = 2 ) then begin
if Form2.visible = false
then Form2.Visible := true
else Form2.Visible := false;
end;
if ( int(Key) = 3 ) then begin
if Form3.visible = false
then Form3.visible := true
else form3.visible := false;
end;
if ( int(Key) = 4 ) then begin
if Form1.visible = false
then Form1.visible := true
else form1.visible := false;
end;
if ( int(Key) = 4 ) then
begin
buttonsreenshot.Click;
end;
end;
procedure TForm1.MenuItem1Click(Sender: TObject);
begin
close;
end;
procedure TForm1.MenuItem2Click(Sender: TObject);
begin
Form1.Hide;
end;
procedure TForm1.MenuItem3Click(Sender: TObject);
begin
Form1.Show;
end;
function MsgProc(Handle: HWnd; Msg: UInt; WParam: Windows.WParam; LParam: Windows.LParam): LResult; stdcall;
begin
if Msg = WM_HOTKEY then Form1.HotKeyPressed(Wparam);
Result := Windows.CallWindowProc(WNDPROC(PrevWndProc), Handle, Msg, WParam, LParam);
end;
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
PrevWndProc:= Windows.GetWindowLongPtr(Self.Handle, GWL_WNDPROC);
SetWindowLongPtr(Self.Handle,Windows.GWL_WNDPROC,Long_ptr(@MsgProc));
RegisterHotKey(Handle, 1, MOD_CONTROL + MOD_ALT + MOD_SHIFT, VK_E);
RegisterHotKey(Handle, 2, MOD_CONTROL + MOD_ALT + MOD_SHIFT, VK_B);
RegisterHotKey(Handle, 3, MOD_CONTROL + MOD_ALT + MOD_SHIFT, VK_T);
RegisterHotKey(Handle, 4, MOD_CONTROL + MOD_ALT + MOD_SHIFT, VK_S);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
close;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Form1.Hide;
end;
procedure TForm1.buttonsreenshotClick(Sender: TObject);
var
MyBitmap: TBitmap;
ScreenDC: HDC;
begin
MyBitmap := TBitmap.Create;
ScreenDC := GetDC(0);
MyBitmap.LoadFromDevice(ScreenDC);
ReleaseDC(0, ScreenDC);
MyBitmap.SaveToFile('test.bmp');
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
UnregisterHotKey(Handle, 1);
UnregisterHotKey(Handle, 2);
UnregisterHotKey(Handle, 3);
UnregisterHotKey(Handle, 4);
end;
procedure TForm1.FormWindowStateChange(Sender: TObject);
begin
if Form1.Windowstate = wsminimized
then begin
Form1.Windowstate := wsnormal;
Form1.Hide;
end;
end;
initialization
{$I uhotkey.lrs}
end.
www.mcpatcher.net | www.hoeper.me
-
- Lazarusforum e. V.
- Beiträge: 3178
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: Delphi zu Lazarus
Dann wäre es jetzt einmal an der Zeit, die Compiler-Meldungen zu lesenBauer321 hat geschrieben:doch brauche ich... aber damit bin ich jetzt noch kein stück weiter...

Edit:
Welche Fehler? Ich sehe keine in deinem Post.Bauer321 hat geschrieben:dann kommen die selben fehler!
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
-
- Beiträge: 465
- Registriert: Sa 21. Aug 2010, 21:30
- OS, Lazarus, FPC: Windows 7 Ultimate (L 1.2.2 FPC 2.6.4 32-bit)
- CPU-Target: 64-Bit
- Wohnort: nahe Bremen
- Kontaktdaten:
Re: Delphi zu Lazarus
www.mcpatcher.net | www.hoeper.me
Re: Delphi zu Lazarus
Ich habe dir gesagt, du sollst in der "uses" "Windows" VOR "Graphics" einsetzen. Hast du aber nicht gemacht.
-
- Beiträge: 770
- Registriert: Sa 21. Feb 2009, 13:46
- OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
- CPU-Target: 32Bit
Re: Delphi zu Lazarus
der Grund dazu:
soweit ich weis scannt der compiler die daten von vone nach hinten durch (ist ja auch logisch)
da es schonmal vorkommt das 2 funktionen, daten, records, classes ,... den gleichen namen haben (aber in unterschiedlichen units sind) benutzt du warscheinlich das TBitmap was in windows steht, weil das das ursprüngliche TBitmap von Graphics "überschreibt". wenn du das änderst benutzt du das richtige Graphics TBitmap und die richtige windows funktion.
Evt sollte auch das gehen:
Korrigiert mich wenn ich falsch liegen...
soweit ich weis scannt der compiler die daten von vone nach hinten durch (ist ja auch logisch)
da es schonmal vorkommt das 2 funktionen, daten, records, classes ,... den gleichen namen haben (aber in unterschiedlichen units sind) benutzt du warscheinlich das TBitmap was in windows steht, weil das das ursprüngliche TBitmap von Graphics "überschreibt". wenn du das änderst benutzt du das richtige Graphics TBitmap und die richtige windows funktion.
Evt sollte auch das gehen:
Code: Alles auswählen
var
MyBitmap : Graphics.TBitmap;
ScreenDC: HDC;
Code: Alles auswählen
Signatur := nil;