Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   In der IDE (https://www.delphipraxis.net/158440-der-ide.html)

EWeiss 17. Feb 2011 17:25

In der IDE
 
gibt es ein flag mit dem ich prüfen kann ob ich mich in der IDE befinde?
Muss dementsprechend meine dwStyle ändern.

gruss

implementation 17. Feb 2011 17:42

AW: In der IDE
 
Delphi-Quellcode:
if csDesigning in ComponentState then begin
  // ...
end;
TComponent hat eine Eigenschaft namens Delphi-Referenz durchsuchenComponentState, die dieses Flag mitaufnehmen kann.

WM_CLOSE 17. Feb 2011 17:44

AW: In der IDE
 
oder zur Laufzeit:
Delphi-Quellcode:
if (DebugHook<>0) and (Findwindow(...,'TAppBuilder',...)<>0) then
//in der IDE

implementation 17. Feb 2011 17:47

AW: In der IDE
 
Ist meins doch auch :gruebel:
Das Flag ist automatisch vom FormDesigner gesetzt, damit die Komponenten merken, ob sie sich im FormDesigner oder im laufenden Programm befinden.
Da musst du sonst nichts mehr machen.

EWeiss 17. Feb 2011 17:51

AW: In der IDE
 
Ich dachte eher an so etwas..

Delphi-Quellcode:
WS_CHILD or LBS_SORT {$IFDEF INIDE} or WS_VISIBLE or WS_OVERLAPPEDWINDOW
      or WS_VSCROLL or WS_HSCROLL or WS_BORDER} {$ENDIF}
also Compiler Flag

gruss

implementation 17. Feb 2011 17:55

AW: In der IDE
 
Nein, so geht's nicht. Aber so:

Delphi-Quellcode:
if csDesigning in ComponentState then
  WS := S_CHILD or LBS_SORT or WS_VISIBLE or WS_OVERLAPPEDWINDOW
      or WS_VSCROLL or WS_HSCROLL or WS_BORDER
else
  WS := S_CHILD or LBS_SORT;

SetWindowLong( ... WS ... );

EWeiss 17. Feb 2011 17:58

AW: In der IDE
 
Zitat:

Zitat von implementation (Beitrag 1082524)
Ist meins doch auch :gruebel:
Das Flag ist automatisch vom FormDesigner gesetzt, damit die Komponenten merken, ob sie sich im FormDesigner oder im laufenden Programm befinden.
Da musst du sonst nichts mehr machen.

FormDesigner hab ich nicht..
Delphi-Quellcode:
if (DebugHook<>0) and (Findwindow(...,'TAppBuilder',...)<>0) then

wäre dann das richtige.

Zitat:

Nein, so geht's nicht.
Schade eigentlich ;)

gruss

implementation 17. Feb 2011 18:00

AW: In der IDE
 
[QUOTE=EWeiss;1082521]gibt es ein flag mit dem ich prüfen kann ob ich mich in der IDE befinde?
Muss dementsprechend meine dwStyle ändern.
Zitat:

Zitat von EWeiss (Beitrag 1082528)
FormDesigner hab ich nicht..

Das check' ich jetzt nicht :gruebel:
Wie meinst du dann 'in der IDE'?

Ob während das Programm ausgeführt wird, die IDE ausgeführt wird?

Die Muhkuh 17. Feb 2011 18:03

AW: In der IDE
 
nonVCL.

Wahrscheinlich will er wissen, ob er die Anwendung von der IDE ausgeführt hat oder nicht?

WM_CLOSE 17. Feb 2011 18:08

AW: In der IDE
 
wie wäre es denn mit
Delphi-Quellcode:
{$IFDEF Debug}

EWeiss 17. Feb 2011 18:11

AW: In der IDE
 
Zitat:

Zitat von Die Muhkuh (Beitrag 1082531)
nonVCL.

Wahrscheinlich will er wissen, ob er die Anwendung von der IDE ausgeführt hat oder nicht?

Ich erstelle eine NONVCL Listbox
Diese soll nicht sichtbar sein und benötigt diese gwlStyle also nicht wenn mein Programm alleine läuft.
Aber in der IDE schon damit ich prüfen kann ob alle Einträge der Listbox korrekt übergeben wurden.

Ich versuchs mal mit
Delphi-Quellcode:
{$Debug}

gruss

WM_CLOSE 17. Feb 2011 18:16

AW: In der IDE
 
OK: Mein Fehler:
du könntest es aber mit dem FindWindow alleine probieren.
denn das Delphi Hauptfenster heißt TAppBuilder (Classname).
Delphi-Quellcode:
FindWindow(nil, 'TAppBuilder')
(vllt auch umgedreht)

EWeiss 17. Feb 2011 18:18

AW: In der IDE
 
Zitat:

Zitat von WM_CLOSE (Beitrag 1082539)
OK: Mein Fehler:
du könntest es aber mit dem FindWindow alleine probieren.
denn das Delphi Hauptfenster heißt TAppBuilder (Classname).
Delphi-Quellcode:
FindWindow(nil, 'TAppBuilder')
(vllt auch umgedreht)

jo wäre dann die einzige möglichkeit
Denn das geht auch nicht.

Delphi-Quellcode:
    hBackgroundListBox := CreateWindowEx(0, 'LISTBOX', 'ID_BACKGROUND', WS_CHILD or LBS_SORT {$IFDEF DEBUG} or WS_VISIBLE or WS_OVERLAPPEDWINDOW
      or WS_VSCROLL or WS_HSCROLL or WS_BORDER {$ENDIF} , 870, 510, 820, 420, hMain,
      ID_BACKGROUND, skInstance, nil);
gruss

Namenloser 17. Feb 2011 18:21

AW: In der IDE
 
Kann man nicht Design-Time-Packages und Runtime-Packages getrennt erstellen? Irgendwie war da doch mal sowas... (machen viele Komponentensammlungen wie z.B. Graphics32, Indy glaubt ich auch). Hab das aber noch nie benutzt, daher weiß ich auch gar nicht so genau wofür das ist und ob das so funktioniert wie ich mir das vorstelle...

himitsu 17. Feb 2011 18:23

AW: In der IDE
 
Einen Compilerschalter kann es nicht geben, denn es kommt erst in den Debugger, nachdem es kompiliert wurde.
Und wärend es kompiliert wird, kann man nicht mit Sicherheit sagen, daß es danach "immer" nur im Debugger läuft.

Aber was mit "in der IDE" gemeint ist, wäre wirklich mal interessant.
> im FormDesigner
> im Debugger

[add]
Jupp, kann man (irgendwie).

EWeiss 17. Feb 2011 18:24

AW: In der IDE
 
Zitat:

Zitat von NamenLozer (Beitrag 1082543)
Kann man nicht Design-Time-Packages und Runtime-Packages getrennt erstellen? Irgendwie war da doch mal sowas... (machen viele Komponentensammlungen wie z.B. Graphics32, Indy glaubt ich auch). Hab das aber noch nie benutzt, daher weiß ich auch gar nicht so genau wofür das ist und ob das so funktioniert wie ich mir das vorstelle...

Ist nicht so tragisch.
Habe nur gedacht das es vieleicht so ein Flag gibt..
Also da es nicht geht muss ich halt ne Funktion zwischen bauen.

gruss

EWeiss 17. Feb 2011 18:25

AW: In der IDE
 
Zitat:

Zitat von himitsu (Beitrag 1082545)
Einen Compilerschalter kann es nicht geben, denn es kommt erst in den Debugger, nachdem es kompiliert wurde.
Und wärend es kompiliert wird, kann man nicht mit Sicherheit sagen, daß es danach "immer" nur im Debugger läuft.

Aber was mit "in der IDE" gemeint ist, wäre wirklich mal interessant.
> im FormDesigner
> im Debugger

[add]
Jupp, kann man (irgendwie).

In der IDE bedeutet bei mir das ich Delphi geöffnet habe und das Programm am debuggen bin ;)
Außerhalb läuft mein Programm ohne Delphi :)
Hoffe ich zumindest ... Heheheheee

gruss

WM_CLOSE 17. Feb 2011 18:49

AW: In der IDE
 
Zitat:

Zitat von WM_CLOSE (Beitrag 1082523)
oder zur Laufzeit:
Delphi-Quellcode:
if (DebugHook<>0) and (Findwindow(...,'TAppBuilder',...)<>0) then
//in der IDE

Dann möchte ich nochmal darauf verweisen.
Wenn es nur dien eigenes prog ist, prüfe nur den DebugHook, der ist im Debugger immer gesetzt. (außer man setzt ihn mit Gewalt auf 0)
Das benutzte ich häufig, um evtl Debuginfos auf einer zusätzlichen Konsole auszugeben.
Sollte eigentlich gehen.
bzw bei der Arbeit, um die Seriennummerabfrage abzusichern.

Man bemerke, dass das einfacher zu umgehen ist, als die Doppelabfrage mit findwindow.

lbccaleb 17. Feb 2011 21:32

AW: In der IDE
 
Vllt hilft dir das weiter:

IsDebuggerPresent


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:26 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