orderformu.cpp
上传用户:hylc_2004
上传日期:2014-01-23
资源大小:46800k
文件大小:4k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #pragma hdrstop
  4. #include "orderformu.h"
  5. //---------------------------------------------------------------------------
  6. #pragma package(smart_init)
  7. #pragma link "fcButton"
  8. #pragma link "fcDemoRichEdit"
  9. #pragma link "fcImage"
  10. #pragma link "fcImageForm"
  11. #pragma link "fcImager"
  12. #pragma link "fcImgBtn"
  13. #pragma link "fcButtonGroup"
  14. #pragma link "fcClearPanel"
  15. #pragma link "fcOutlookBar"
  16. #pragma link "fcShapeBtn"
  17. #pragma resource "*.dfm"
  18. TOrderForm *OrderForm;
  19. //---------------------------------------------------------------------------
  20. __fastcall TOrderForm::TOrderForm(TComponent* Owner)
  21.         : TForm(Owner)
  22. {
  23. }
  24. //---------------------------------------------------------------------------
  25. //Get position of start of the current word.
  26. int GetStartOfWord(Char c1,Char c2,String s,int Index)
  27. {
  28.   if (Index == 0) Index = s.Length();
  29.   int i=Index;
  30.   if (i>s.Length()) i=s.Length();
  31.   while (i>=1) {
  32.     if ((s[i]==c1) || (s[i]==c2)) break;
  33.     i--;
  34.   }
  35.   return(i);
  36. }
  37. //---------------------------------------------------------------------------
  38. //Get the clicked on Word From a Point
  39. String GetWordFromPoint(TRichEdit *CurRichEdit,int x,int y)
  40. {
  41.   TPoint p=Point(x,y);
  42.   int CurSel = SendMessage(CurRichEdit->Handle, EM_CHARFROMPOS, 0, long(&p));
  43.   int Line = SendMessage(CurRichEdit->Handle, EM_EXLINEFROMCHAR, 0, CurSel);
  44.   String CurLineStr = CurRichEdit->Lines->Strings[Line];
  45.   int LineIndex = SendMessage(CurRichEdit->Handle, EM_LINEINDEX, Line, 0);
  46.   int Offset = CurSel - LineIndex;
  47.   if ((Offset > 0) && (CurLineStr[Offset] == ' ')) Offset=Offset+1;
  48.   if ((CurLineStr.Length()==0) || (Offset==0)) return ("");
  49.   //Get Start Index of Current Word.
  50.   int startWord = GetStartOfWord(' ','t' , CurLineStr, Offset + 1) + 1;
  51.   //Loop from current offset til next whitespace.
  52.   if (Offset <= CurLineStr.Length()) 
  53.   while (!((CurLineStr[Offset] == ' ') ||
  54.          (CurLineStr[Offset] == 't') ||
  55.          (CurLineStr[Offset] == 'n') ||
  56.          (CurLineStr[Offset] == '') ||
  57.          (CurLineStr[Offset] == 'r')))
  58.   {
  59.     Offset++;
  60.     if (Offset>=CurLineStr.Length()){
  61.       Offset++;
  62.       break;
  63.      }
  64.   }
  65.   return(CurLineStr.SubString(startWord,Offset-startWord));
  66. }
  67. void __fastcall TOrderForm::OrderingButtonClick(TObject *Sender)
  68. {
  69.   fcOutlookBar1->ActivePage = Ordering;
  70. }
  71. //---------------------------------------------------------------------------
  72. void __fastcall TOrderForm::AboutButtonClick(TObject *Sender)
  73. {
  74.   fcOutlookBar1->ActivePage = About;
  75. }
  76. //---------------------------------------------------------------------------
  77. void __fastcall TOrderForm::PricesButtonClick(TObject *Sender)
  78. {
  79.   fcOutlookBar1->ActivePage = Prices;
  80. }
  81. //---------------------------------------------------------------------------
  82. void __fastcall TOrderForm::CloseBtnClick(TObject *Sender)
  83. {
  84.   Close();
  85. }
  86. //---------------------------------------------------------------------------
  87. void __fastcall TOrderForm::OrderingDescriptionMouseMove(TObject *Sender,
  88.       TShiftState Shift, int X, int Y)
  89. {
  90.  if ((GetWordFromPoint((TRichEdit *)Sender,X,Y) == "http://www.woll2woll.com") ||
  91.      (GetWordFromPoint((TRichEdit *)Sender,X,Y) == "sales@woll2woll.com")) {
  92.     ((TRichEdit *)Sender)->Cursor = crHandPoint;
  93.  } else ((TRichEdit *)Sender)->Cursor = crDefault;
  94. }
  95. //---------------------------------------------------------------------------
  96. void __fastcall TOrderForm::OrderingDescriptionMouseDown(TObject *Sender,
  97.       TMouseButton Button, TShiftState Shift, int X, int Y)
  98. {
  99.  if (GetWordFromPoint((TRichEdit *)Sender,X,Y) == "http://www.woll2woll.com") {
  100.      ShellExecute(Handle, "OPEN",
  101.      PChar("https://www.he.net/cgi-bin/suid/~wol2wol/ordering/order.cgi"), 0, 0, SW_SHOWNORMAL);
  102.  } else if (GetWordFromPoint((TRichEdit *)Sender,X,Y) == "sales@woll2woll.com") {
  103.      ShellExecute(Handle, "OPEN",
  104.      PChar("mailto:sales@woll2woll.com"), 0, 0, SW_SHOWNORMAL);
  105.  }
  106. }
  107. //---------------------------------------------------------------------------