Einzelnen Beitrag anzeigen

fsc

Registriert seit: 12. Sep 2005
22 Beiträge
 
#11

Re: DLL Einbindung - Fehler beim Beenden

  Alt 2. Aug 2006, 11:28
Delphi-Quellcode:
library Aenderungsinfo;
uses
  ShareMem,
  SysUtils,
  Dialogs,
  StdCtrls,
  Forms,
  Classes,
  Grids,
  kbmMemTable,
  uSOAPClient,
  QGraphics,
  Controls;

{$R *.res}

procedure benutzerdetails_anzeigen(provider,eindeutiges_feld,aktueller_eintrag,aktueller_eintrag_detail:string);stdcall; export;
var
  Form1:TForm;
  StrGr_Aenderung:TStringgrid;
  SoapManager:TSoapManager;
  SMT_Table:TSoapMemTable;
begin
  Form1:=TForm.Create(nil);
  Form1.Caption:='Datensatzdetails: '+aktueller_eintrag+' - '+aktueller_eintrag_detail;
  Form1.Position:=poScreenCenter;
  Form1.BorderStyle:=bsdialog;

  SoapManager:=TSoapManager.Create(nil);
  SoapManager.Active:=True;
  SMT_Table:=TSoapMemTable.Create(nil);
  SMT_Table.SOAPManager:=SoapManager;
  SMT_Table.ProviderName:=provider;
  SMT_Table.Active:=True;
  SMT_Table.Filtered:=True;
  SMT_Table.Filter:=eindeutiges_feld+'='''+aktueller_eintrag+'''';
  SMT_Table.Refresh;

  Form1.Height:=80;
  Form1.Width:=410;
  StrGr_Aenderung:=TStringgrid.Create(nil);
  with StrGr_Aenderung do
  begin
    Parent:=Form1;
    DefaultRowHeight:=20;
    Align:=alClient;
    if Form1.Height - Form1.ClientHeight > 28 then Form1.ClientHeight:=40 else Form1.ClientHeight:=45;//Form1.ClientHeight - (ClientHeight - Height);
    Form1.Width:=410;

    ColCount:=4;
    ColWidths[1]:=110;
    ColWidths[2]:=100;
    ColWidths[3]:=110;
    ColWidths[0]:=Width - ColWidths[1] - ColWidths[2] - ColWidths[3] - 7;
    RowCount:=2;
    FixedCols:=0;
    Cells[0,0]:=' Anlage von:';
    Cells[1,0]:=' Anlagedatum:';
    Cells[2,0]:=' Änderung von:';
    Cells[3,0]:=' Änderungsdatum:';
    Cells[0,1]:=SMT_Table.FieldbyName('benutzer_neu').asstring;
    Cells[1,1]:=SMT_Table.FieldbyName('datum_neu').asstring;
    Cells[2,1]:=SMT_Table.FieldbyName('benutzer_aend').asstring;
    Cells[3,1]:=SMT_Table.FieldbyName('datum_aend').asstring;
    StrGr_Aenderung.Options:= [goFixedHorzLine, goFixedVertLine, goHorzLine, goVertLine];
    SMT_Table.Destroy;
    SoapManager.Destroy;
  end;
  try
    Form1.Update;
    Form1.ShowModal;
  finally
    Form1.Destroy;
   end;
end;

exports
  benutzerdetails_anzeigen;
Der Datenbankzugriff erfolgt über die SoapMemTable bzw SoapManager.

Im Hauptprogramm befindet sich ein ganz gewöhnlicher Prozedurenaufruf. Der Implementationteil steht bereits oben. Sharemem ist erster Eintrag in der uses Liste.
  Mit Zitat antworten Zitat