Componentes.Terceros.RemObj.../internal/5.0.23.613/1/RemObjects SDK for Delphi/Samples/xMethods/xMethodsMain.pas
david 2824855ea7 - Modificación del paquete RemObjects_Core_D10 para que sea un paquete de runtime/designtime (antes era designtime sólo)
- Recompilación en Delphi10 de todos los paquetes de RO para generar las DCU's en Lib\D10
- Recompilación en Delphi10 de todos los paquetes de DA para generar las DCU's en Lib\D10

git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.RemObjects@9 b6239004-a887-0f4b-9937-50029ccdca16
2007-09-10 14:06:19 +00:00

385 lines
11 KiB
ObjectPascal

unit xMethodsMain;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, StdCtrls, ExtCtrls, Spin,
uROClient, uROSOAPMessage, uROXMLSerializer,
uROPoweredByRemObjectsButton,
uROWinInetHttpChannel;
type
TBabelOption = record
ShowLabel,
Code: string;
end;
const
BabelOptions: array[0..9] of TBabelOption = (
(ShowLabel: 'English -> French'; Code: 'en_fr'),
(ShowLabel: 'English -> German'; Code: 'en_de'),
(ShowLabel: 'English -> Italian'; Code: 'en_it'),
(ShowLabel: 'English -> Portugese'; Code: 'en_pt'),
(ShowLabel: 'English -> Spanish'; Code: 'en_es'),
(ShowLabel: 'French -> English'; Code: 'fr_en'),
(ShowLabel: 'German -> English'; Code: 'de_en'),
(ShowLabel: 'Italian -> English'; Code: 'it_en'),
(ShowLabel: 'Portugese -> English'; Code: 'pt_en'),
(ShowLabel: 'Spanish -> English'; Code: 'es_en'));
type
TxMethodsMainForm = class(TForm)
SOAPMessage: TROSOAPMessage;
Panel1: TPanel;
pc_Pages: TPageControl;
ts_Home: TTabSheet;
RoPoweredByRemObjectsButton1: TRoPoweredByRemObjectsButton;
ScrollBox1: TScrollBox;
Label34: TLabel;
Label33: TLabel;
Label32: TLabel;
Label35: TLabel;
Label36: TLabel;
Label37: TLabel;
Label38: TLabel;
tsQueryService: TTabSheet;
Label4: TLabel;
Label22: TLabel;
Label23: TLabel;
eQueryService: TEdit;
QueryServiceMemo: TMemo;
GetAllServiceNamesButton: TButton;
GetServiceSummariesByPublisherButton: TButton;
ePublisher: TEdit;
GetServiceDetailButton: TButton;
eServiceID: TEdit;
tsFedexTracker: TTabSheet;
Label6: TLabel;
Label20: TLabel;
Label21: TLabel;
eFedex: TEdit;
FedexMemo: TMemo;
eTrackingID: TEdit;
GetTrackingStatusButton: TButton;
tsEbay: TTabSheet;
Label7: TLabel;
eeBay: TEdit;
GetCurrentPriceButton: TButton;
eAuctionValue: TEdit;
ts_DomainChecker: TTabSheet;
Label8: TLabel;
Label15: TLabel;
eDomainChecker: TEdit;
eDomain: TEdit;
CheckDomainButton: TButton;
tsExchange: TTabSheet;
Label9: TLabel;
eExchange: TEdit;
cbFrom: TComboBox;
cbTo: TComboBox;
GetRateButton: TButton;
tsTraffic: TTabSheet;
Label10: TLabel;
eTraffic: TEdit;
TrafficMemo: TMemo;
eHighway: TEdit;
GetTrafficButton: TButton;
tsBarnsAndNoblePrice: TTabSheet;
Label11: TLabel;
eBarns: TEdit;
eISBN: TEdit;
GetPriceButton: TButton;
ePrice: TEdit;
tsBabelFish: TTabSheet;
Label1: TLabel;
TranslateButton: TButton;
eInput: TEdit;
eOutput: TEdit;
rbBabelTransMode: TRadioGroup;
eBabelFish: TEdit;
Label31: TLabel;
Label39: TLabel;
Label40: TLabel;
eDomainAvailability: TEdit;
Label41: TLabel;
HttpChannel: TROWinInetHTTPChannel;
Label14: TLabel;
Label42: TLabel;
Label16: TLabel;
eAuctionID: TEdit;
Label17: TLabel;
Bevel2: TBevel;
Label43: TLabel;
Label44: TLabel;
Bevel3: TBevel;
Label45: TLabel;
Label46: TLabel;
Label47: TLabel;
Label48: TLabel;
Label49: TLabel;
Label2: TLabel;
Label3: TLabel;
Label50: TLabel;
Label51: TLabel;
Label52: TLabel;
Label53: TLabel;
Label54: TLabel;
Label55: TLabel;
Label56: TLabel;
Label57: TLabel;
Label58: TLabel;
Label59: TLabel;
Label61: TLabel;
Label13: TLabel;
Label30: TLabel;
Label18: TLabel;
Label19: TLabel;
Label60: TLabel;
Label62: TLabel;
Label64: TLabel;
Label65: TLabel;
Label66: TLabel;
Label67: TLabel;
Label69: TLabel;
Bevel1: TBevel;
Bevel7: TBevel;
Bevel6: TBevel;
Bevel8: TBevel;
Bevel4: TBevel;
eRate: TMemo;
procedure TranslateButtonClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure eBabelFishDblClick(Sender: TObject);
procedure GetPriceButtonClick(Sender: TObject);
procedure GetRateButtonClick(Sender: TObject);
procedure CheckDomainButtonClick(Sender: TObject);
procedure GetCurrentPriceButtonClick(Sender: TObject);
procedure GetTrafficButtonClick(Sender: TObject);
procedure GetTrackingStatusButtonClick(Sender: TObject);
procedure GetAllServiceNamesButtonClick(Sender: TObject);
procedure Label38Click(Sender: TObject);
private
procedure SetProxy;
{ Private declarations }
public
{ Public declarations }
end;
var
xMethodsMainForm: TxMethodsMainForm;
implementation
uses
BabelFish_Intf, BarnsAndNoblePrice_Intf, CurrencyExchange_Intf, DomainChecker_Intf,
eBayPriceWatcher_Intf, FedExTracker_Intf, CaliforniaTrafic_Intf, xMethodsQueryService_Intf,
ShellAPI;
{$R *.DFM}
procedure TxMethodsMainForm.FormCreate(Sender: TObject);
var
i: integer;
begin
pc_Pages.ActivePageIndex := 0;
for i := 0 to High(BabelOptions) do
rbBabelTransMode.Items.Add(BabelOptions[i].ShowLabel);
rbBabelTransMode.ItemIndex := 0;
cbFrom.ItemIndex := 151;
cbTo.ItemIndex := 49;
end;
procedure TxMethodsMainForm.SetProxy;
begin
{ Important!
Since we are using the same component for all web services we want to make the TargetURL default
to the one in the original WSDL. This property is set before each request (see xxx_Intf.pas units.
By erasing the value we ensure the right EndpointURI is used. }
HttpChannel.TargetURL := '';
{if CheckBox1.Checked then begin
HttpChannel.IndyClient.Request.ProxyServer := Edit3.Text;
HttpChannel.IndyClient.Request.ProxyPort := SpinEdit1.Value;
end
else begin
HttpChannel.IndyClient.Request.ProxyServer := '';
HttpChannel.IndyClient.Request.ProxyPort := 0;
end;}
end;
procedure TxMethodsMainForm.eBabelFishDblClick(Sender: TObject);
begin
ShellExecute(0, 'open', PChar(TEdit(Sender).Text), nil, nil, SW_NORMAL);
end;
procedure TxMethodsMainForm.TranslateButtonClick(Sender: TObject);
var
svc: IBabelFishService;
begin
Screen.Cursor := crHourGlass;
try
SetProxy;
eOutput.Text := '';
eOutput.Repaint();
svc := CoBabelFishService.Create(SOAPMessage, HttpChannel);
eOutput.Text := svc.BabelFish(BabelOptions[rbBabelTransMode.ItemIndex].Code, eInput.Text);
finally
Screen.Cursor := crDefault;
end;
end;
procedure TxMethodsMainForm.GetPriceButtonClick(Sender: TObject);
var
svc: IBNQuoteService;
begin
Screen.Cursor := crHourGlass;
try
SetProxy;
ePrice.Text := '';
ePrice.Repaint();
svc := CoBNQuoteService.Create(SOAPMessage, HttpChannel);
ePrice.Text := FloatToStr(svc.getPrice(eISBN.Text));
finally
Screen.Cursor := crDefault;
end;
end;
procedure TxMethodsMainForm.GetRateButtonClick(Sender: TObject);
var
svc: ICurrencyExchangeService;
begin
Screen.Cursor := crHourGlass;
try
SetProxy;
svc := CoCurrencyExchangeService.Create(SOAPMessage, HttpChannel);
eRate.Lines.Add('Exchange Rate from ' + cbFrom.Text + ' to ' + cbTo.Text + ' = ' + FloatToStr(svc.getRate(cbFrom.Text, cbTo.Text)));
finally
Screen.Cursor := crDefault;
end;
end;
procedure TxMethodsMainForm.CheckDomainButtonClick(Sender: TObject);
var
svc: Inet_xmethods_services_domainchecker_DomainCheckerService;
begin
Screen.Cursor := crHourGlass;
try
SetProxy();
eDomainAvailability.Text := '';
eDomainAvailability.Repaint();
svc := Conet_xmethods_services_domainchecker_DomainCheckerService.Create(SOAPMessage, HttpChannel);
eDomainAvailability.Text := svc.checkDomain(eDomain.Text);
finally
Screen.Cursor := crDefault;
end;
end;
procedure TxMethodsMainForm.GetCurrentPriceButtonClick(Sender: TObject);
var
svc: IeBayWatcherService;
Res: double;
begin
Screen.Cursor := crHourGlass;
try
SetProxy();
eAuctionValue.Text := '';
eAuctionValue.Repaint();
// ToDo: faile swith WinInetHttpChannel. why?
svc := CoeBayWatcherService.Create(SOAPMessage, HttpChannel);
Res := svc.getCurrentPrice(eAuctionID.Text);
eAuctionValue.Text := FloatToStr(Res);
finally
Screen.Cursor := crDefault;
end;
end;
procedure TxMethodsMainForm.GetTrafficButtonClick(Sender: TObject);
var
svc: ICATrafficService;
so: TXMLSerializationOptions;
begin
Screen.Cursor := crHourGlass;
try
SetProxy();
svc := CoCATrafficService.Create(SOAPMessage, HttpChannel);
TrafficMemo.Lines.Text := svc.getTraffic(eHighway.Text);
SOAPMessage.SerializationOptions := so;
finally
Screen.Cursor := crDefault;
end;
end;
procedure TxMethodsMainForm.GetTrackingStatusButtonClick(Sender: TObject);
var
svc: IFedExTrackerService;
begin
Screen.Cursor := crHourGlass;
try
SetProxy;
svc := CoFedExTrackerService.Create(SOAPMessage, HttpChannel);
FedexMemo.Lines.Text := svc.getStatus(eTrackingID.Text);
finally
Screen.Cursor := crDefault;
end;
end;
procedure TxMethodsMainForm.GetAllServiceNamesButtonClick(Sender: TObject);
var
svc: IXMethodsQuery;
aoss: ArrayOfServiceSummary;
i: integer;
sd: ServiceDetail;
begin
Screen.Cursor := crHourGlass;
try
svc := CoXMethodsQuery.Create(SOAPMessage, HttpChannel);
QueryServiceMemo.Lines.Add('------------------ ' + TButton(Sender).Caption + ' ------------------');
if (Sender = getAllServiceNamesButton) or (Sender = GetServiceSummariesByPublisherButton) then begin
if (Sender = GetServiceSummariesByPublisherButton) and (ePublisher.Text <> '') then
aoss := svc.getServiceSummariesByPublisher(ePublisher.Text)
else
aoss := svc.getAllServiceSummaries;
try
if aoss <> nil then
for i := 0 to (aoss.Count - 1) do
with aoss[i] do
QueryServiceMemo.Lines.Add(Format('%s : %s, %s', [id, name, shortDescription]));
finally
aoss.Free;
end
end
else if (Sender = GetServiceDetailButton) then begin
sd := svc.getServiceDetail(eServiceID.Text);
try
if sd <> nil then
QueryServiceMemo.Lines.Add(sd.name + sLineBreak +
sd.id + sLineBreak +
sd.shortDescription + sLineBreak +
sd.description + sLineBreak +
sd.implementationID + sLineBreak +
sd.email + sLineBreak +
sd.wsdlURL + sLineBreak +
sd.infoURL + sLineBreak +
sd.publisherID);
finally
sd.Free;
end;
end;
finally
Screen.Cursor := crDefault;
end;
end;
procedure TxMethodsMainForm.Label38Click(Sender: TObject);
begin
ShellExecute(Handle, 'open', pChar((Sender as TLabel).Caption), nil, nil, SW_SHOWNORMAL);
end;
end.