29. august 2001 - 09:41Der er
8 kommentarer og 1 løsning
non-modal delphi dll form
Hej Delphi coders, Har lavet en modal delphi dll form. Nu vil jeg i stedet have formen som non-modal, men hvordan ? Koden ser bla. sådan ud:
{ This function creates an instance of the form. } function License(hWnd: THandle): integer; stdcall; var iRetVal: integer; begin Application.Handle := hWnd; try try form1:= Tform1.Create(Application); iRetVal:=form1.ShowModal; //hvorfor er der ikke en form1.ShowModeless finally form1.Free; end; except on E:Exception do begin ShowMessage(\'Error on Creating or Showing License: \'+E.Message); raise; end; end; result := iRetVal; end;
De fleste virksomheder har efterhånden bevist, at AI virker.
Pilotprojekter leverer resultater. Medarbejdere bruger generative AI-værktøjer. Nye use cases dukker op på tværs af organisationen.
Du kan dog ikke blot frigive din form igen i finally, når den er modeless... Dette kan du fx gøre i formen selv (sæt fx Action til caFree i event OnClose på formen).
Hvad mener du med det?? Hvis der er tale om en almindelig Delphi form, skulle den da gerne have en metode, der hedder Show (den er defineret på TCustomForm).
TForm er nedarvet fra TCustomForm - så du skal altså have Show til rådighed!
Hvad mener du med, den ikke er til rådighed? Får du en compile-fejl, eller kan du bare ikke se den i CodeInsight? Hvis det er sidst-nævnte er det sikkert bare fordi, du ikke har fjernet assignment\'et foran form1.Show - Show returnerer ikke noget.
Ja, det er rigtigt, den er der nu, sorry. Nu mangler jeg bare at holde formen fast. Det viser sig at form1.show viser sig i et splitsekund, hvorefter form1 er væk. Selv om form1.free er udkommenteret: Jeg er ved at skabe en nonmodal form i et non VCL-procedure orienteret miljø ved anvendelse af dll-forms. Den modale form virker fint (men er ikke særlig anvendelig, da der skal være direkte kommunikation mellem dll og det procedure orienteret basicmiljø). Kender du en løsning på bevarelsen at den nonmodale form? Er du træt at mine begynder Delphi problemer (er lige ankommet fra VB) skal du bare sig til ;-)
{ This function creates an instance of the form. } function License(hWnd: THandle): integer; stdcall; var iRetVal: integer; begin Application.Handle := hWnd; try try form1:= Tform1.Create(Application); //iRetVal:=form1.ShowModal; form1.Show; finally //form1.Free; end; except on E:Exception do begin ShowMessage(\'Error on Creating or Showing License: \'+E.Message); raise; end; end; result := iRetVal; end;
Forøvrigt: Med en ShowMessage i TForm1.FormActivate holdes formen oppe. Den forsvinder selvfølgeligt når man klikker ok. Kunne man forestille sig et andet event der holder formen oppe. Her er en procedure fra formen:
Takker, falder nogle dll hajer over denne thread må de gerne komme med forslag.... :-)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.