Bonjour,voilà maintenant deux jours que je me creuse la tête pour comprendre ce qui se passe sans succès.

J'ai un code qui fonctionne très bien dans mon programme il y ait utilisé plusieurs fois.
Mais lorsque que je veux l'utiliser dans une DLL j'ai le message:
[DCC Erreur] Import.pas(98): E2250 Aucune version surchargée de 'ShowModal' ne peut être appelée avec ces arguments
j'ai essayé de déplacer ma fonction juste au-dessus
puis de la déclarer avant implémentation
mais cela n'a rien changé

je vous montre mon code si quelqu'un peut m'aider je lui en serais très reconnaissant
import.pas qui est le fichier qui gère ma DLL:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Unit Import;
 
Interface
 
Uses
  Windows, Forms, ADODB, WinSkinData,
  WinSkinDlg, XLSOld, LoadWait, Controls, Dialogs;
 
Procedure QuickImportXLSOld(AADOTable: TADOTable; AFileName: String; AHandle: THandle; APHandle: HWnd; AData: Pointer); Stdcall;
Procedure ImportDBXLSOldModal(Sender: TObject);
 
Exports
  QuickImportXLSOld;
 
Implementation
 
Procedure QuickImportXLSOld(AADOTable: TADOTable; AFileName: String; AHandle: THandle; APHandle: HWnd; AData: Pointer);
Begin
  fmLoadWait := TfmLoadWait.Create(NIL);
  Try
    If fmLoadWait.ShowModal(ImportDBXLSOldModal) = mrOk Then
    Begin
      MessageDlg('Importation réussi!', mtInformation, [mbOK], 0);
    End;
  Finally
    fmLoadWait.Free;
    fmLoadWait := NIL;
  End;
End;
 
Procedure ImportDBXLSOldModal(Sender: TObject);
Begin
//-
End;
 
End.
Et le fichier fmLoadWait.pas mais cela ne vient pas de lui puisque dans le programme je l'utilise à plusieurs endroits sans aucun problème je met un exemple en bas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
Unit LoadWait;
 
Interface
 
Uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls, ExtCtrls, Consts;
 
Type
  TfmLoadWait = Class(TForm)
    pbLoad:    TProgressBar;
    lDescribe: TLabel;
    Procedure FormCloseQuery(Sender: TObject; Var CanClose: Boolean);
  Private
    FCloseReady: Boolean;
    Function lDescribeRead: String;
    Procedure lDescribeWrite(Caption: String);
    Function LoadPositionRead: Integer;
    Procedure LoadPositionWrite(Position: Integer);
    Function LoadMaxRead: Integer;
    Procedure LoadMaxWrite(Max: Integer);
  Public
    Function ShowModal(OnShowModal: TNotifyEvent): Integer; Overload;
  Published
    Property Describe: String Read lDescribeRead Write lDescribeWrite;
    Property LoadPosition: Integer Read LoadPositionRead Write LoadPositionWrite;
    Property LoadMax: Integer Read LoadMaxRead Write LoadMaxWrite;
    Property CloseReady: Boolean Read FCloseReady Write FCloseReady;
  End;
 
Var
  fmLoadWait: TfmLoadWait;
 
Implementation
 
{$R *.dfm}
 
Function TfmLoadWait.lDescribeRead: String;
Begin
  Result := lDescribe.Caption;
End;
 
Procedure TfmLoadWait.lDescribeWrite(Caption: String);
Begin
  lDescribe.Caption := Caption;
//  lDescribe.Repaint;
  Application.ProcessMessages;
End;
 
Function TfmLoadWait.LoadPositionRead: Integer;
Begin
  Result := pbLoad.Position;
End;
 
Procedure TfmLoadWait.LoadPositionWrite(Position: Integer);
Begin
  pbLoad.Position := Position;
//  pbLoad.Repaint;   
  Application.ProcessMessages;
End;
 
Function TfmLoadWait.LoadMaxRead: Integer;
Begin
  Result := pbLoad.Max;
End;
 
Procedure TfmLoadWait.LoadMaxWrite(Max: Integer);
Begin
  pbLoad.Position := 0;
  pbLoad.Max      := Max;
  pbLoad.Repaint;
End;
 
Procedure TfmLoadWait.FormCloseQuery(Sender: TObject; Var CanClose: Boolean);
Begin
  CanClose := FCloseReady;
End;
 
Function TfmLoadWait.ShowModal(OnShowModal: TNotifyEvent): Integer;
Var
  WindowList:     Pointer;
  SaveFocusState: TFocusState;
  SaveCursor:     TCursor;
  SaveCount:      Integer;
  ActiveWindow:   HWnd;
Begin
  CancelDrag;
  If Visible Or Not Enabled Or (fsModal In FFormState) Or
    (FormStyle = fsMDIChild) Then
    Raise EInvalidOperation.Create(SCannotShowModal);
  If GetCapture <> 0 Then
    SendMessage(GetCapture, WM_CANCELMODE, 0, 0);
  ReleaseCapture;
  Application.ModalStarted;
  Try
    Include(FFormState, fsModal);
    If (PopupMode = pmNone) And (Application.ModalPopupMode <> pmNone) Then
    Begin
      RecreateWnd;
      HandleNeeded;
    End;
    ActiveWindow   := GetActiveWindow;
    SaveFocusState := Forms.SaveFocusState;
    Screen.SaveFocusedList.Insert(0, Screen.FocusedForm);
    Screen.FocusedForm := Self;
    SaveCursor         := Screen.Cursor;
    Screen.Cursor      := crDefault;
    SaveCount          := Screen.CursorCount;
    WindowList         := DisableTaskWindows(0);
    Try
      Show;
      Try
        SendMessage(Handle, CM_ACTIVATE, 0, 0);
        ModalResult := 0;
        //add by ouiouioui
        CloseReady  := False;
        Application.ProcessMessages; //permet de bien afficher la fenetre modal
        If Assigned(OnShowModal) Then
          OnShowModal(NIL);
        //end add
        Repeat
          Application.HandleMessage;
          If Application.Terminated Then
            ModalResult := mrCancel
          Else
          If ModalResult <> 0 Then
            CloseModal;
        Until ModalResult <> 0;
        Result := ModalResult;
        SendMessage(Handle, CM_DEACTIVATE, 0, 0);
        If GetActiveWindow <> Handle Then
          ActiveWindow := 0;
      Finally
        Hide;
      End;
    Finally
      If Screen.CursorCount = SaveCount Then
        Screen.Cursor := SaveCursor
      Else
        Screen.Cursor := crDefault;
      EnableTaskWindows(WindowList);
      If Screen.SaveFocusedList.Count > 0 Then
      Begin
        Screen.FocusedForm := Screen.SaveFocusedList.First;
        Screen.SaveFocusedList.Remove(Screen.FocusedForm);
      End
      Else
        Screen.FocusedForm := NIL;
      If ActiveWindow <> 0 Then
        SetActiveWindow(ActiveWindow);
      RestoreFocusState(SaveFocusState);
      Exclude(FFormState, fsModal);
    End;
  Finally
    Application.ModalFinished;
  End;
End;
 
End.
maintenant un petit exemple que j'utilise dans mon programme et qui fonctionne parfaitement:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Procedure TfmMain.btCreateNewDBClick(Sender: TObject);
Begin
  fmLoadWait := TfmLoadWait.Create(Self);
  Try
    fmLoadWait.ShowModal(CreateNewDB)
  Finally
    fmLoadWait.Free;
    fmLoadWait := NIL;
  End;
End;
 
Procedure TfmMain.CreateNewDB(Sender: TObject);
Begin
  //...
End;
Je ne comprends vraiment pas, merci d'avance à celui qui pourra m'aider