![]() |
AW: Mainform über .dProj - Datei auslesbar?
Das mit dem Auslesen der .dpr-Datei funktioniert ganz gut.
@EWeiss Wie sieht so ein Aufruf mit WinMain aus? Hast Du da überhaupt klassische Formulare (.dfm-Dateien)? |
AW: Mainform über .dProj - Datei auslesbar?
Eine dProj ist ja kein Ersatz sondern eine Erweiterung für die dpr-Datei.
|
AW: Mainform über .dProj - Datei auslesbar?
Zitat:
Siehe auch hier: ![]() |
AW: Mainform über .dProj - Datei auslesbar?
@Uwe: OK, wenn das zur Laufzeit entschieden wird, kann ich eh nichts machen. Dann wird eben keine "Mainform" gefunden und der User muss halt per Doppelklick auf eine der Dateien in der Projektliste entscheiden, welche Datei er laden möchte.
Ich wollte diese Funktion hier im Programm ergänzen, weil ich festgestellt habe, dass ich sehr oft etwas in der Mainform suche, da macht es Sinn, diese automatisch zu öffnen, spart mir wieder ein paar Klicks (kann man natürlich Optional an oder ausschalten)... |
AW: Mainform über .dProj - Datei auslesbar?
Zitat:
Die meiner Drawing64 Anwendung, ist quasi vom Aufbau fast immer gleich.
Delphi-Quellcode:
gruss
function WinMain(hInstance: HINST; hPrevInstance: HINST; lpCmdLine: PChar; nCmdShow: integer)
: integer; stdcall; var Msg: TMsg; myClass: PWideChar; myTitle: PWideChar; dwStyle: DWORD; wc: TWndClassEx; X: integer; Y: integer; IsInitialized: Bool; rc: TRect; Path: string; begin myClass := 'POPUPWINDOW'; wc.cbSize := SIZEOF(wc); IsInitialized := GetClassInfoEx(hInstance, myClass, wc); if IsInitialized = False then begin wc.cbSize := SIZEOF(wc); wc.style := CS_HREDRAW or CS_VREDRAW or CS_DBLCLKS; wc.lpfnWndProc := @WndProc; wc.cbClsExtra := 0; wc.cbWndExtra := EXTEND_EXTRA * 4; wc.hInstance := hInstance; wc.hIcon := 0; wc.hCursor := LoadCursor(0, IDC_ARROW); wc.hbrBackground := 0; wc.lpszMenuName := nil; wc.lpszClassName := myClass; wc.hIconSm := wc.hIcon; if RegisterClassEx(wc) <> 0 then IsInitialized := True; end; if IsInitialized then begin dwExStyle := 0; dwStyle := WS_POPUP; SetRect(rc, 0, 0, XMIN_SIZE, YMIN_SIZE); AdjustWindowRectEx(rc, dwStyle, False, dwExStyle); X := MAX((GetSystemMetrics(SM_CXSCREEN) - rc.Right - rc.left) div 2, 0); Y := MAX((GetSystemMetrics(SM_CYSCREEN) - rc.Bottom - rc.Top) div 2, 0); // Create The Window myTitle := 'Drawing64'; MainHandle := CreateWindowEx(dwExStyle, myClass, // Classen Name myTitle, // Window Titel dwStyle, // Definierte Window Style X, Y, // Windows Position rc.Right - rc.left, // Windows Weite rc.Bottom - rc.Top, // Windows Höhe 0, // Kein Parent Window 0, // Kein Menu wc.hInstance, // Instance nil); // Nichts zu WM_CREATE hinzufügen if MainHandle <> 0 then begin // Flag zum Neustarten wenn Skin geändert wurde Restart := False; UserAppDataDir := GetSpecialFolder(CSIDL_APPDATA); // Direktory erstellen wenn nicht vorhanden if not ForceDirectories(UserAppDataDir + '\BrewIdeas\Drawing64') then begin raise Exception.Create('Cannot create' + UserAppDataDir + '\BrewIdeas\Drawing64'); Halt; end; Path := UserAppDataDir + '\BrewIdeas\Drawing64\'; InitPath; DefSkin := DrawingIni.ReadString('SkinPath', 'Skin', ExtractFilePath(ParamStr(0)) + 'Skins\Blue\Drawing64.ske'); DrawingIni.Free; // Skin Initialisieren und einstellungen laden SKAERO_InitSkin(MainHandle, DefSkin, True, True); AddChildControls(MainHandle, wc.hInstance); // Ini laden LoadIni; // Window Anzeigen SKAERO_ShowMainWindow(MainHandle, 5); // Emuliert Aero in WinXP wenn in der Ini aktiviert if SKAERO_AEROEMULATE <> 0 then SetTimer(MainHandle, SKAERO_AERO_TIMER, SKAERO_AEROTIMERDELAY, nil); SetTimer(MainHandle, DRAWING_TIMER, 0, nil); // Windows Messagen verarbeiten while GetMessage(Msg, 0, 0, 0) do begin if IsDialogMessage(MainHandle, Msg) = False then begin TranslateMessage(Msg); DispatchMessage(Msg); end; end; // Falls aktiviert Timer beenden if SKAERO_AEROEMULATE <> 0 then KillTimer(MainHandle, SKAERO_AERO_TIMER); SKAERO_Free; end; // end WinHandle end else UnRegisterClass(wc.lpszClassName, hInstance); if Restart then Result := ShellExecute(0, 'open', PWideChar(ParamStr(0)), nil, nil, SW_SHOW) else Result := Msg.WParam; end; {$ENDREGION} |
AW: Mainform über .dProj - Datei auslesbar?
Eigentlich ist das doch OK, wenn Harry's Programm genauso funktioniert (oder nicht funktioniert) wie die IDE. Wenn es kein Application.CreateForm in der .DPR gibt, kann die IDE das Hauptformular auch nicht angeben (wenn man eines auswählt, fügt die IDE (gerne auch mal falschen) Code (gerne auch an der falschen Stelle) ein.
|
AW: Mainform über .dProj - Datei auslesbar?
Zitat:
Er hat mich gefragt und ich habe geantwortet ;) gruss |
AW: Mainform über .dProj - Datei auslesbar?
Zitat:
|
AW: Mainform über .dProj - Datei auslesbar?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz