Visit our Sponsor   Visit our Sponsor
delphi3000.com - the free delphi knowledge platform
delphi3000.com - the free delphi knowledge platform
Have a look at your member-status

connecting people's knowledge


  - Recent ArticlesRSS feed for Recent Articles on delphi3000.com
  - List of All Articles
  - Top Viewed Articles
  - Articles (+Attachem.)
  - Articles Of Interest
  - Categories
  - Top Uploader
  - Search
  - Index

  - My Home
  - Submit an Article
  - My Articles
  - My Personal Data
  - My Bookmarks
  - Activities
  - Login/Logout

  - Sign Up
  - Why Sign Up
  - Newsletter

  - Press
  - Advertise

  - Contact
  - Feedback





Community
Borland
ClubeDelphi
Dr. Bob
UK-BUG
Delphi Meetings
Planeta Delphi







Startblatt.de






Share this article with friendsShare this article with friends
Rate this articleRate this article - to keep the quality of delphi3000.com !
Comment this article or read through previous comments (1)


Control POV-Ray 3.5Format this article printer-friendly!Bookmark function is only available for registered users!
Product:
Delphi all versions
Category:
Graphic
Skill Level:
Scoring:
Last Update:
12/23/2003
Search Keys:
delphi delphi3000 article borland vcl code-snippet API winapi povray POV-Ray POVRay
Times Scored:
4
Visits:
4942
Uploader: Ivan Sivak
Company: Size Software
Reference: N/A
 
Question/Problem/Abstract:
This article is about POV-Ray manipulation from delphi using
API funs.
Answer:



{
This article describe POVRay manipulation from delphi using API functions.
Maybe you know povray, it's very good renderer and it's free to download.
Thanks to Pov-Team for POVRay, but for us - programmers is important how to
control povray from.There are many 3d apps that uses povray as rendering
engine.These applications uses communication dll, probably it's better solution, but I think my solution could be also useful, and if not,it's at least
my first article.
I wrote this when I was 16, now I'm 17 and Iam bored-in fact this
is a reason why I write it :-)
}

// first, we have to know control names:
const
   cP = 'Pov35MainWinClass';
   A = 'ReBarWindow32';
   B = 'ComboBox';
   C = 'ToolbarWindow32';
   D = 'Edit';
   E = 'tooltips_class32';
   F = 'Pov35RenderAnimWinClass';
   G = '001801B3';
   K = 'TParentForm';
   L = 'TTabControl';
   M = 'TCPanel';
   N = 'TCodeMax';
   O = 'TParentForm';
   P = 'ComboLBox';
   Q = 'TThreadWindow';
   R = 'TPUtilWindow';
   S = 'TPanel';
   T = 'Pov35MessageWinClass';
   U = 'msctls_statusbar32';

{this procedure converts hex string to cardinal (due to wParam and lParam)}
function HexToClr(const HexStr: string): Cardinal;
  var
    I: Integer;
    C: Char;
  begin
    Result := 0;
    for I := 1 to Length(HexStr) do
    begin
      C := HexStr[I];
      case C of
        '0'..'9': Result := Int64(16) * Result + (Ord(C) - $30);
        'A'..'F': Result := Int64(16) * Result + (Ord(C) - $37);
        'a'..'f': Result := Int64(16) * Result + (Ord(C) - $57);
      else
        raise EConvertError.Create('Illegal character in hex string');
      end;
    end;
end;

{this procedure executes any file,in our case-povray executable...and don't
forget to add "ShellApi"}
Procedure ExecuteFile(filename:String);
begin
  ShellExecute(HANDLE_FLAG_INHERIT,'open',pChar(filename),nil,nil,SW_NORMAL);
end;

{=======================================================================}


{it simply returns true if povray is running else it returns false}
Function isPovrayRunning: boolean;
Var H: THandle;
begin
  H := FindWindow(cp, nil);
  if H <> 0 then result := true else result := false;
end;


{Finally, this procedure start rendering}
Procedure SS_POVRAY_DO_RENDER(SSparam: string);
Var H, H2, H3, H4, H5, H6, H7, H9, H10, H11, H12, H13, H14, H15, H16, H17: THandle;
begin

if ispovrayrunning = false then ExecuteFile(SSParam);

H := FindWindow(cP,nil); // handle to Main Form of the Application POV-Ray
H2 := FindWindowEx(H, 0, K, nil);  // Handle of "TParentForm"
H3 := FindWindowEx(H2, 0, L, nil); // Handle of TTabControl
H4 := FindWindowEx(H3, 0, M, nil); // handle of TCPanel
H5 := FindWindowEx(H4, 0, N, nil); // handle of TCodeMax

H6 := FindWindowEx(H, 0, A, nil); // Handle of ReBarWindow32
H7 := FindWindowEx(H6, 0, C, nil); // Handle of ToolbarWindow32
// H8 := FindWindowEx(H6, 0, E, nil); // Handle of tooltips_class32
H9 := FindWindowEx(H6, 0, B, nil); // Handle of Resolution ComboBox
H10 := FindWindowEx(H6, 0, D, nil); // Handle of command line
H11 := FindWindow(P, nil);          // Handle of ComboLBox
H12 := FindWindow(Q, nil);          // Handle of TThreadWindow
H13 := FindWindow(R, nil);          // Handle of TPUtilWindow
H14 := FindWindowEx(H3, 0, S, nil); // Handle of TPanel
H15 := FindWindowEx(H14, 0, T, nil); // Handle of POVRAY Message Tab
H16 := FindWindowEx(H, 0, U, nil);  // handle of the statusBar of the Povray
H17 := FindWindowEx(H6, 0, F, nil); // handle of the pov35renderanimwinclass32

PostMessage(H6, WM_PARENTNOTIFY  ,HexToClr('00000201'),HexToClr('002801B7'));
PostMessage(H , WM_PARENTNOTIFY  ,HexToClr('00000201'),HexToClr('002A01B7'));
PostMessage(H7, WM_MOUSEACTIVATE ,HexToClr('00070160'),HexToClr('02010001'));
PostMessage(H6, WM_MOUSEACTIVATE ,HexToClr('00070160'),HexToClr('02010001'));
PostMessage(H , WM_MOUSEACTIVATE ,HexToClr('00070160'),HexToClr('02010001'));
PostMessage(H , WM_WINDOWPOSCHANGING , 0 , HexToClr('0012FD08'));
PostMessage(H , WM_NCPAINT , HexToClr('00000001') , 0);
PostMessage(H , WM_GETTEXT ,HexToClr('000001FE'),HexToClr('0012E298'));
PostMessage(H , WM_WINDOWPOSCHANGED ,0,HexToClr('0012FD08'));
PostMessage(H , WM_MOUSEACTIVATE ,HexToClr('00070160'),HexToClr('02010001'));
PostMessage(H11, WM_ACTIVATEAPP ,HexToClr('00000001'),0);
PostMessage(H , WM_ACTIVATEAPP ,HexToClr('00000001'), 0);
PostMessage(H12, WM_ACTIVATEAPP ,HexToClr('00000001'), 0);
PostMessage(H13, WM_ACTIVATEAPP ,HexToClr('00000001'), 0);
PostMessage(H13, WM_ACTIVATEAPP ,HexToClr('00000001'), 0);
PostMessage(H  , WM_NCACTIVATE ,HexToClr('00000001'), 0);
PostMessage(H  , WM_ACTIVATE  ,HexToClr('00000002'), 0);
PostMessage(H  , WM_SETFOCUS ,0 , 0);
PostMessage(H  , WM_KILLFOCUS ,HexToClr('000302DA'), 0);
PostMessage(H5, WM_SETFOCUS ,HexToClr('00070160'), 0);
PostMessage(H7, WM_LBUTTONDOWN ,HexToClr('00000001'), HexToClr('002601AE'));
PostMessage(H7, WM_NCPAINT ,HexToClr('55040315'), 0);
PostMessage(H2, WM_NCPAINT ,HexToClr('59040315'), 0);
PostMessage(H3, WM_NCPAINT ,HexToClr('5C040315'), 0);
PostMessage(H4, WM_NCPAINT ,HexToClr('5F040315'), 0);
PostMessage(H5, WM_NCPAINT ,HexToClr('62040315'), HexToClr('00000001'));
  // THIS PLACE : scrollbar - ignore
PostMessage(H5, WM_CTLCOLORSCROLLBAR ,HexToClr('14010215'), HexToClr('000302D0'));
PostMessage(H6, WM_NCPAINT ,HexToClr('68040315'), 0);
// PostMessage(H7, WM_LBUTTONDOWN ,HexToClr('00000001'), HexToClr('00000001'));
PostMessage(H10 , WM_NCPAINT ,HexToClr('6B040315'), 0);
// PostMessage(H7, WM_LBUTTONDOWN ,HexToClr('00000001'), HexToClr('00000001'));
PostMessage(H6, WM_CTLCOLOREDIT ,HexToClr('0901038C'), HexToClr('000302F8'));
PostMessage(H6, WM_CTLCOLOREDIT ,HexToClr('0901038C'), HexToClr('000302F8'));
PostMessage(H9, WM_NCPAINT ,HexToClr('00000001'), 0);
PostMessage(H6, WM_CTLCOLOREDIT ,HexToClr('01010057'), HexToClr('000302FE'));
PostMessage(H6, WM_CTLCOLOREDIT ,HexToClr('01010057'), HexToClr('000302FE'));
// PostMessage(H7, WM_LBUTTONUP ,0 , HexToClr('002501AE'));
PostMessage(H7, WM_CAPTURECHANGED ,0, 0);
PostMessage(H6, WM_COMMAND ,HexToClr('00000802'), HexToClr('00030304'));
// PostMessage(H , WM_COMMAND ,HexToClr('00000802'), HexToClr('00030304')); //
PostMessage(H7, DM_SETDEFID ,HexToClr('000007EE'), 0);
PostMessage(H7, DM_SETDEFID ,HexToClr('000007DF'), 0);
PostMessage(H7, DM_SETDEFID ,HexToClr('000009BA'), 0);
PostMessage(H7, DM_SETDEFID ,HexToClr('00000852'), 0);
PostMessage(H7, DM_SETDEFID ,HexToClr('00000A28'), 0);
PostMessage(H7, DM_SETDEFID ,HexToClr('00000A29'), 0);
PostMessage(H7, DM_SETDEFID ,HexToClr('00000A2A'), 0);
PostMessage(H7, DM_SETDEFID ,HexToClr('00000A2B'), 0);
PostMessage(H7, DM_SETDEFID ,HexToClr('00000A2C'), 0);
PostMessage(H7, DM_SETDEFID ,HexToClr('00000A2D'), 0);
PostMessage(H7, DM_SETDEFID ,HexToClr('00000A2E'), 0);
PostMessage(H7, DM_SETDEFID ,HexToClr('00000A2F'), 0);
PostMessage(H7, DM_SETDEFID ,HexToClr('00000A30'), 0);
PostMessage(H7, DM_SETDEFID ,HexToClr('00000A31'), 0);
PostMessage(H7, DM_SETDEFID ,HexToClr('00000A32'), 0);
PostMessage(H7, DM_SETDEFID ,HexToClr('00000A33'), 0);
PostMessage(H7, DM_SETDEFID ,HexToClr('00000A34'), 0);
PostMessage(H7, DM_SETDEFID ,HexToClr('00000A35'), 0);
PostMessage(H7, DM_SETDEFID ,HexToClr('00000A36'), 0);
PostMessage(H7, DM_SETDEFID ,HexToClr('00000A37'), 0);
PostMessage(H7, DM_SETDEFID ,HexToClr('00000839'), 0);
PostMessage(H7, DM_SETDEFID ,HexToClr('000007E4'), 0);
PostMessage(H7, DM_SETDEFID ,HexToClr('000007E9'), 0);
PostMessage(H7, DM_SETDEFID ,HexToClr('00000807'), 0);
PostMessage(H7, DM_SETDEFID ,HexToClr('0000097E'), 0);
PostMessage(H7, DM_REPOSITION ,HexToClr('0000097E'), 0);
PostMessage(H7, TB_HIDEBUTTON ,HexToClr('00000802'), HexToClr('00000001'));
PostMessage(H7, TB_HIDEBUTTON ,HexToClr('00000803'), 0); //
PostMessage(H10, WM_CANCELMODE ,0, 0);
PostMessage(H10, WM_ENABLE ,0, 0);
PostMessage(H7, DM_SETDEFID ,HexToClr('000007EE'), 0);
PostMessage(H , WM_WINDOWPOSCHANGING ,0, HexToClr('0012E7B4'));
PostMessage(H , WM_NCCALCSIZE ,HexToClr('00000001'), HexToClr('0012E788'));
PostMessage(H , WM_NCPAINT ,HexToClr('44040339'), 0);
PostMessage(H , WM_GETTEXT ,HexToClr('000001FE'), HexToClr('0012CD44'));
PostMessage(H , WM_WINDOWPOSCHANGED ,0, HexToClr('0012E7B4'));
PostMessage(H7, DM_SETDEFID ,HexToClr('000007EE'), 0);
PostMessage(H7, DM_SETDEFID ,HexToClr('000007EE'), HexToClr('00000001'));
PostMessage(H9, CB_GETCURSEL ,0, 0);
PostMessage(H9, CB_GETLBTEXTLEN ,HexToClr('00000003'), 0);
PostMessage(H9, CB_GETLBTEXT ,HexToClr('00000003'), HexToClr('0012DF44'));
PostMessage(H9, CB_GETCURSEL ,0, 0);
PostMessage(H9, CB_GETITEMDATA ,HexToClr('00000003'), 0);
PostMessage(H11, LB_GETITEMDATA ,HexToClr('00000003'), 0);
PostMessage(H  , WM_WINDOWPOSCHANGING ,0, HexToClr('0012E7CC'));
PostMessage(H  , WM_NCCALCSIZE ,HexToClr('00000001'), HexToClr('0012E7A0'));
PostMessage(H  , WM_NCPAINT ,HexToClr('90040710'), 0);
PostMessage(H  , WM_GETTEXT ,HexToClr('000001FE'), HexToClr('0012CD5C'));
PostMessage(H  , WM_WINDOWPOSCHANGED ,0, HexToClr('0012E7CC'));
PostMessage(H14, WM_WINDOWPOSCHANGING ,0 , HexToClr('0012E568'));
PostMessage(H14, WM_NCPAINT ,HexToClr('00000001'), 0);
PostMessage(H14, WM_WINDOWPOSCHANGED ,0, HexToClr('0012E568'));
PostMessage(H4 , WM_WINDOWPOSCHANGING ,0 , HexToClr('0012E5F4'));
PostMessage(H4 , WM_NCCALCSIZE ,HexToClr('00000001'), HexToClr('0012E5C8'));
PostMessage(H14, WM_NCPAINT ,HexToClr('82040315'), 0);
PostMessage(H15, WM_NCPAINT ,HexToClr('83040315'), 0);
PostMessage(H4,  WM_WINDOWPOSCHANGED ,0, HexToClr('0012E5F4'));
PostMessage(H4,  WM_SIZE ,0 , HexToClr('020A340D'));
PostMessage(H5,  WM_WINDOWPOSCHANGING ,0, HexToClr('0012DDAC'));
PostMessage(H5,  WM_NCCALCSIZE ,HexToClr('00000001'), HexToClr('0012DD80'));
PostMessage(H5,  WM_NCPAINT ,HexToClr('00000001'), 0);
PostMessage(H5,  WM_WINDOWPOSCHANGED ,0, HexToClr('0012DDAC'));
PostMessage(H5,  WM_SIZE ,0, HexToClr('0208034B'));
PostMessage(H5,  WM_CTLCOLORSCROLLBAR ,HexToClr('14010215'), HexToClr('000302D0'));
PostMessage(H14, WM_WINDOWPOSCHANGING ,0, HexToClr('0012E4DC'));
PostMessage(H14, WM_NCCALCSIZE ,HexToClr('00000001'), HexToClr('0012E4B0'));
PostMessage(H14, WM_WINDOWPOSCHANGED ,0 , HexToClr('0012E4DC'));
PostMessage(H14, WM_MOVE ,0, HexToClr('02250004'));
PostMessage(H14, WM_SIZE ,0, HexToClr('004B034D'));
PostMessage(H14, WM_WINDOWPOSCHANGING ,0 , HexToClr('0012E5F4'));
PostMessage(H14, WM_NCCALCSIZE ,HexToClr('00000001'), HexToClr('0012E5C8'));
PostMessage(H14, WM_NCPAINT ,HexToClr('00000001'), 0);
PostMessage(H15, WM_NCPAINT ,HexToClr('00000001'), 0);
PostMessage(H14, WM_WINDOWPOSCHANGED ,0 , HexToClr('0012E5F4'));
PostMessage(H14, WM_MOVE ,0 , HexToClr('022A0004'));
PostMessage(H14, WM_SIZE ,0 , HexToClr('0046034D'));
PostMessage(H15, WM_WINDOWPOSCHANGING ,0, HexToClr('0012E480'));
PostMessage(H15, WM_NCCALCSIZE ,HexToClr('00000001'), HexToClr('0012E454'));
PostMessage(H15, WM_NCPAINT ,HexToClr('00000001'), 0);
PostMessage(H15, WM_WINDOWPOSCHANGED ,0 , HexToClr('0012E480'));
PostMessage(H15, WM_SIZE ,0 , HexToClr('00320339'));
PostMessage(H14, WM_WINDOWPOSCHANGING ,0 , HexToClr('0012E630'));
PostMessage(H14, WM_CHILDACTIVATE ,0, 0);
PostMessage(H5 , WM_CTLCOLORSCROLLBAR,HexToClr('12010261'), HexToClr('000302D0'));
PostMessage(H6,  WM_CTLCOLORSTATIC ,HexToClr('0901038C'), HexToClr('000302F8'));
PostMessage(H6,  WM_CTLCOLORSTATIC ,HexToClr('0901038C'), HexToClr('000302F8'));
PostMessage(H16, DM_SETDEFID ,HexToClr('00000005'), HexToClr('0012CBA4'));
PostMessage(H16, DM_SETDEFID ,HexToClr('00000006'), HexToClr('0060292C'));
PostMessage(H16, DM_SETDEFID ,HexToClr('00000005'), HexToClr('058FFB54'));
PostMessage(H16, DM_SETDEFID ,HexToClr('00000006'), HexToClr('00646E10'));
PostMessage(H17, WM_GETMINMAXINFO ,0 , HexToClr('0012D434'));
PostMessage(H17, WM_NCCREATE ,0 , HexToClr('0012D410'));
PostMessage(H17, WM_NCCALCSIZE ,0, HexToClr('0012D454'));
PostMessage(H17, WM_CREATE ,0, HexToClr('0012D3FC'));
PostMessage(H7 , DM_SETDEFID ,HexToClr('000007EE'), 0);
PostMessage(H7 , DM_SETDEFID ,HexToClr('00000893'), HexToClr('00000001'));
PostMessage(H7 , TB_HIDEBUTTON ,HexToClr('000007EE'), HexToClr('00000001'));
PostMessage(H7 , TB_HIDEBUTTON ,HexToClr('00000893'), 0);
PostMessage(H17, WM_WINDOWPOSCHANGING ,0, HexToClr('0012D53C'));
PostMessage(H  , WM_WINDOWPOSCHANGING ,0, HexToClr('0012D53C'));
PostMessage(H  , WM_NCACTIVATE ,0 , HexToClr('00D3027A'));
PostMessage(H  , WM_ACTIVATE ,0 , HexToClr('00D3027A'));
PostMessage(H17, WM_WINDOWPOSCHANGING ,0 , HexToClr('0012D53C'));
PostMessage(H  , WM_WINDOWPOSCHANGING ,0 , HexToClr('0012D53C'));
PostMessage(H17, WM_NCACTIVATE ,HexToClr('00000001'), HexToClr('0070160'));
PostMessage(H17, WM_ACTIVATE ,HexToClr('00000001'), HexToClr('0070160'));
PostMessage(H16, DM_SETDEFID ,HexToClr('00000006'), HexToClr('00646E10'));
PostMessage(H5 , WM_KILLFOCUS ,HexToClr('00D3027A'), 0);
PostMessage(H17, WM_SETFOCUS ,HexToClr('000302DA'), 0);
PostMessage(H17, WM_NCPAINT ,HexToClr('00000001'), 0);
PostMessage(H17, WM_WINDOWPOSCHANGED ,0 , HexToClr('0012D53C'));
PostMessage(H  , WM_SETTEXT ,0 , HexToClr('0012E770'));
PostMessage(H16, DM_SETDEFID ,0 , HexToClr('006298C0'));
PostMessage(H16, DM_SETDEFID ,0 , HexToClr('006298C0'));
PostMessage(H16, DM_SETDEFID ,0 , HexToClr('006298C0'));
PostMessage(H16, DM_SETDEFID ,0 , HexToClr('006298C0'));
PostMessage(H16, DM_SETDEFID ,0 , HexToClr('006298C0'));
PostMessage(H16, DM_SETDEFID ,HexToClr('00000006') , HexToClr('0060292C'));//
PostMessage(H7 , DM_SETDEFID ,HexToClr('00000852') , HexToClr('00000001'));
PostMessage(H7 , DM_SETDEFID ,HexToClr('000007DF') , HexToClr('00000001'));
PostMessage(H7 , DM_SETDEFID ,HexToClr('000009BA') , HexToClr('00000001'));
PostMessage(H7 , DM_SETDEFID ,HexToClr('000007E9') , HexToClr('00000001'));
PostMessage(H7 , DM_SETDEFID ,HexToClr('000007EB') , HexToClr('00000001'));
PostMessage(H7 , DM_SETDEFID ,HexToClr('00000A28') , HexToClr('00000001'));
PostMessage(H7 , DM_SETDEFID ,HexToClr('00000A29') , HexToClr('00000001'));
PostMessage(H7 , DM_SETDEFID ,HexToClr('00000A2A') , HexToClr('00000001'));
PostMessage(H7 , DM_SETDEFID ,HexToClr('00000A2B') , HexToClr('00000001'));
PostMessage(H7 , DM_SETDEFID ,HexToClr('00000A2C') , HexToClr('00000001'));
PostMessage(H7 , DM_SETDEFID ,HexToClr('00000A2D') , HexToClr('00000001'));
PostMessage(H7 , DM_SETDEFID ,HexToClr('00000A2E') , HexToClr('00000001'));
PostMessage(H7 , DM_SETDEFID ,HexToClr('00000A2F') , HexToClr('00000001'));
PostMessage(H7 , DM_SETDEFID ,HexToClr('00000A30') , HexToClr('00000001'));
PostMessage(H7 , DM_SETDEFID ,HexToClr('00000A31') , HexToClr('00000001'));
PostMessage(H7 , DM_SETDEFID ,HexToClr('00000A32') , HexToClr('00000001'));
PostMessage(H7 , DM_SETDEFID ,HexToClr('00000A33') , HexToClr('00000001'));
PostMessage(H7 , DM_SETDEFID ,HexToClr('00000A34') , HexToClr('00000001'));
PostMessage(H7 , DM_SETDEFID ,HexToClr('00000A35') , HexToClr('00000001'));
PostMessage(H7 , DM_SETDEFID ,HexToClr('00000A36') , HexToClr('00000001'));
PostMessage(H7 , DM_SETDEFID ,HexToClr('00000A37') , HexToClr('00000001'));
PostMessage(H7 , DM_SETDEFID ,HexToClr('00000839') , HexToClr('00000001'));
PostMessage(H7 , DM_SETDEFID ,HexToClr('00000807') , HexToClr('00000001'));
PostMessage(H7 , DM_SETDEFID ,HexToClr('0000097E') , 0);                   //
PostMessage(H7 , DM_REPOSITION ,HexToClr('0000097E') , 0);
PostMessage(H7 , TB_HIDEBUTTON ,HexToClr('00000802') , 0);
PostMessage(H7 , TB_HIDEBUTTON ,HexToClr('00000803') , HexToClr('00000001'));
PostMessage(H10 , WM_ENABLE ,HexToClr('00000001') , 0);
PostMessage(H7 , DM_SETDEFID ,HexToClr('000007EE') , 0);
PostMessage(H7 , DM_SETDEFID ,HexToClr('00000852') , HexToClr('00000001'));
end;


(*
I don't know if you using povray or no,I wrote it to my own 3d app,and I think
it could be useful for some people....so why not..
If you'd like to have code, please send me e-mail...
*)


Ivan Sivak
@Sizesoft





Please rate this article!
Skill level:
BeginnerExpert

Useful:
No!Very!

Overall rating:
PoorExcellent



Comments to this article
Write a new comment
I forgot something...
    Ivan Sivak (Dec 23 2003 10:33AM)

if you are interested about povray manipulation using API,i can also
write an article how to control povray commandline....
Respond














 
Sign up to consume product discounts for Bronze memberships !

read more


  Visit our Sponsor

 

  Community Ad of
D. Wischnewski
 
   














 







     
  Copyright © 2000 - 2007 delphi3000.com - All rights reserved. Terms of use. || Privacy
delphi3000.com is a service by bluestep.com IT-Services GmbH (Vienna)