# Native Code > برنامه نویسی در Delphi > مقالات مرتبط با Delphi/Win32 >  آنچه برای نوشتن یک برنامه اینتراوب نیاز دارید

## ghabil

اینتراوب محصول شرکت Atozed هست که هدف اون ایجاد صفحات وب با داشتن حداقل اطلاعات از برنامه نویسی تحت وب بیان میکنند ، اما برای افراد حرفه ای نیز ابزاری کارآمد و بسیار منعطف می باشد.
ورژن فعلی اینتراوب 8 میباشد اما بزودی ورژن 9 با پشتیانب از Ajax به بازار ارائه خواهد شد و در حالا حاضر نیز ورژن 9 ببصورت Beta ریلیز شده.

ورژنی که با دلفی 7 ارائه شد ورژن 5 بود که برای زمان خودش بسیار جلب بود اما ار اون زمان اینتراوب بشدت توسعه پیدا کرده و امکانات بسیار زیادی در اون اضافه شده.
متاسفانه آپدیت سایر ورژنهای اینتراوب برای کاربران رایگان نمیباشد و باید خریداری بشه.
نسخه 7 اینتراوب نسخه بسیار فدرتمند و کارآمدی هست که قابلیتهای اصلی که به اون اضافه شده ساپورت HTML3.2 (برای PDA ها) و Partial Update میباشد که تا حد ریادی سرعت لود صفحات رو افزایش میده (جالبه توجه که این امر حداقل 1 سال قبل از مطرح شدن طرح Ajax طراحی شده) .

امکانی که توجه برنامه نویسان دلفی رو به اینتراوب جذب کرده اینه که شما زمان برنامه نویسی با دلفی کاملا احساس میکنید که دارید کد برای ویندوز مینویسید و به هیچ وجه درگیر مسائل برنامه نویسی تحت وب نمیشوید.

*ایجاد برنامه با اینتراوب :*

برای ایجاد برنامه با اینتراوب باید از ویزاد اولیه دلفی استفاده کنید: اینتراوب امکان ایجاد ISAPI برای IIS همینطور DS,DSO برای آپاچی و ایجاد برنامه بصورت StandAlone رو داره که تمامی این حالت به راحتی قابل تبدیل به یکدیگر می باشند و با توجه به این مسئله و امکاناتی که حالت StandAlone در زمان نوشتن برنامه اراده میکنه (امکان دیباگ بدون دردسر و عدم وجود دردسرهای Unload کردن ) حالت ایده آل طراحی برنامه در حالت Stand Alone  هست ، اما با توجه به اینکه حالت Stand Alone به سختی قابل هاست کردن می باشد میتوان برنامه رو در حالت StandAlone نوشت و پس از پایان به یک ISAPI تبدیل کرد. (اینکه این امکان چقدر لذت بخشه برای کسانی که قدیمها برنامه تحت وب مینوشتند کاملا ملموسه)
همچنین اینتراوب امکان ترکیب شدن با وب اسنپ رو هم داره که در بعضی شرایط واقعا مناسبه (مثلا برای نوشتن وب سایتهای ساده)
از دیگر امکانات اینتراوب میتوان به Session Managment کاملش اشاره کرد که کاملا تمامی نیازهای برنامه نویسی رو پوشش میده . در این زمینه باید بیشتر (عملی ) توضیح بدم ...
اینتراوب برای Session Managment سه حالت URL, Coockiesو Hidden Fields رو ساپورت میکنه که اینها رو م توضیح خواهم داد .

قبل از اینکه انشاا.. عملی توضیح دادن امکانات اینتراوب رو شروع کنم بهتره که یکمی خودتون باهاش کار بکنید و امکاناتش رو ببینید ...



در ابتدای کار یک برنامه StandAlone اینتراوب ایجاد کنید....
حالا بسته به ورژن اینتراوبی که استفاده میکنید به جز یونیت پروژه 3 یونیت و 3 فرم (یا دو یونیت و 2 فرم ایجاد میشه) 

1) IWServerControler : یونیت تنظیمات برنامه میباشد که بسیاری از تنظیمات اساسی سرور برنامه ما در این یونیت قرار داره (برای کسانی که asp.net آشنایی دارند این یونیت معادل WebConfig میباشد.) اگر پراپرتیهای این آبجکت رو تغییر دادین و سراغ پورت رفتین (پورتی که وب سرور StandAlone روی اون پاسخ میده) دقت کنید که اگر از نسخه ای استفاده میکنید که Trial هست؛ پورت بدون توجه به اونچه که شما تعیین میکنید بصورت رندم انتخاب خواهد شد ، که البته با رجیستر کردن برنامه این مشکل حل میشه. 
بد نیست تا اینجایید یک نگاهی هم به SupportedBrowsers بکنید (تعیین این پراپرتی موجب میشه کدهای تولید شده برای بروسرهای مختلف قابل اجرا باشه)

2) IWUserSession : این آبجکت گلبال شما می باشد و در واقع بخش قابل استفاده برنامه نویس از آبجکت اصلی برنامه. (همون Session در ASP) بسیار نقش حیاتی در برنامه هایی که بعدا خواهید نوشت داره و در مسالهای ما مورد استفاده قرار خواهد گرفت.
*توضیح مهم :*
در برنامه نویسی تحت وب چون Applicationسرور شما برنامه های شمارو بصورت MultiThread اجرا میکنه پس تمام کد شما باید ThreadSafe باشه که این اولین نکتش یعنی Global Variable نداریم و اگر بخواهیم داشته باشیم باید Syncronize بشه به همین خاطر ما هرآنچه رو که بصورت گلوبال نیاز داریم در UserSession خواهیم گذاشت.

توضیح : در نسخ اولیه اینتراوب UserSession بصورت جداگانه وجود نداره و تا جایی که یادمه توی ServerController تعریف میشه .

3) IWUnit{IWForm1} : بک فرم از نوع IWAppForm می باشد که درواقع معادل وبی یک TForm می باشد. شما میتونید روی این فرم هر کدوم از کامپونتهای اینتراوب رو قرار بدین و چون Layout در حالت پبشفرض بصورت Absolute هست طراحی صفحات بسیار شبیه طراحی فرمهای دلفی خواهد شد .

برای اینکه حوصلتون سر نره بریم سراغ :

*Hello Intrawb World*

یک کامپونت IWLabel یک IWEdit و یک IWButton رو فرم قرار بدین : 
درست مثل دلفی Caption لیبل رو مثلا بزارید Please enter your name بعد IWEdit رو بزارید جلوش و Button رو هم کنارشون ، همچنان عین دلفی : روی Button دوبارکلیک کنید تا Event کلیکش ساخته بشه : حالا خیلی ساده توی OnClick بنویسید 

  Webapplication.ShowMessage('Welcome to IW World ' + IWEdit1.Text);


برنامه رو اجرا کنید و وقتی که فرم سرور اومد دوباره F9 بزنید ...

همینطوری که میبینید کار با اینتراوب خیلی راحته و درست عین نوشتن کدهای دلفی میمونه(البته اولش اینطوریه) . 
توی این مثال شما کدتون رو به دلفی نوشتید امام IW به جاوا اسکریپت تبدیلش کرد.

حالا به همین مثال یک Button دیگه اضافه کنیه ، اما اینبار بجای اینکه روش دبل کلیک کنید پراپرتی ScriptEvents رو پیدا کنید و OnClickش رو انتخاب کنید :
حالا توش بنیوسید 

window.alert('welcome' + IWEDIT1IWCL.value);


این بار همون کار اما با استفاده از جاوااسکریپت انجام شد .
البته این روش دوم در این مثال ساده ما به روش اول خیلی ارجحیت داره اما اینا فقط نمونه هستند برای کارهای پیچیده ای که قرار هست بعدا انشاا.. انجام بدین و اونموقع از ترکیب هردوحالت استفاده خواهیم کرد.

الان وقت خوبیه که یکمی  کامپونتهای Standardش رو تست کنید امام فعلا سراغ ساختن فرم دوم یا کار با دیتا نریند چون خودشون نکته دارند.


*برنامه نویسی با دیتابیس*

وقتی که سراغ برنامه نویسی تحت وب با اینتراوب میرید شاید باورتون نشه که چقدر ساده و شبیه دلفی هست ، در تب IWData معادل اکثر کامپونتهای ویندوز بیس دلفی هست و دقیقا به همون روشهای سابق ایجاد میشند و قابل استفاده هستند.
اما شاید اولین مشکلی که بهش برخورد خواهید کرد این باشه که زمانی که برنامه رو اجرا میکنید ، بجای اومدن برنامه با خطای Coinitilze has not been called مواجه میشوید! راه حل خیلی سادست براحتی برید سراغ ServerController و مقدار پراپرتی Cominitilzation رو به ciMultiThread تغییر بدید. اگر قبلا ISAPI درست کرده باشید حتما این کار رو با فراخوانی Coinitilize انجام داده اید.
شاید IWDBGrid یکی از قویترین کامپونتهای اینتراوب باشه که واقعا امکانات جالبی در اختیارتون قرار میده ، پیشنهاد میکنم که حتما به پراپرتیهاش یک نگاهی بندازید خوشبختانه اکثرا معلوم هسن که چی هستند ، اما زمانی که خوب با اونها آشنا شدید بد نیست نگاهی هم به Eventهاش و بخصوص Event قدرتمند OnRenderCell هست ،  توی این ایونت دسترسی مستقیم به تک تک خانه های گریدتون دارید و هر کاری که بخواهید هم با کد نویسی پاسکال و هم با درج HTML در داخل اطلاعات میتونید انجام بدید .
مثلا کد زیر توی یک فیلد که مثلا URL یکسری عکس هست بجای اینکه URL ها رو نشون بده عکسهارو  نشون میده :

procedure TIWForm2.IWDBGrid1RenderCell(ACell: TIWGridCell; const ARow,
  AColumn: Integer);
begin
  if (ARow > 0) and (AColumn = 3) then
    ACell.Text := '<img src ="' + ACell.Text + '">';
end;


ARow > 0 برای اینه که روی Header و Footer این تغییرات اتفاق نیفته و AColumn = 3 مثلا یعنی ستون 4م ستونی هست که مقدارش آدرس عکسهاست.

حالا همین کد رو اینطوری مینویسیم :

  if (ARow > 0) and (AColumn = 3) then
  begin
    ACell.Control := TIWImageFile.Create(IWDBGrid1);
    with ACell.Control as TIWImageFile do
    begin
      ImageFile.URL := ACell.Text;
      OnClick = ImageOnClick;
    end;
  end;


این بار آبجکت معادل این عکس هم در حافظه وجود داره و در واقع کدهای لازم برای ایجاد معادل HTML اون رو اینتراوب میسازه ضمنا به Event کلیک عکس نیز یک روال پاسکالی متصل میشه تا درصورت کلکی کاربر روی اون ، روال اجرا بشه . حالا مثلا اگر بجای این آبجکت یک IWEdit گذاشته بودیم اونوقت میتونستیم نوشته های کاربر در اون رو هم در کد پاسکال دریافت کنیم .

*فرم دوم*

برای ساحتن فرم دوم کافیه از New>Intraweb>AppForm رو انتخاب کنید تا مثل فرمهای دلفی یک فرم جدید ساخته بشه. اما اگر دقت کنید در کدش میبینید که متغیر گلوبالی که دلفی بصورت پیشفرض برای فرمهاش میگیره (مثلا Form1) اینجا وجود نداره  و مثلا نمیتونید بنویسید Form2.show; دلیلش رو هم قبلا گفتم ;"استفاده از متغیرهی گلوبال threadSafe نیست".
برای نمایش فرمها اول باید یک Instance از اونارو بسازیم و بعد اون رو نمایش بدیم یعنی مثلا یک چیزی اینجوری :

  WebApplicaiton.ActiveForm.Releas;
  TIWFrom2.Create(webApplication).Show;


خط اول موجب آزاد شدن حافظه گرفته شده برای فرمی که در حال حاضر کاربر در حال دیدنش هست میشه ، دقت داشته باشید در IW برای فرمها بجای Free باید از دستور Releas استفاده کنید تا تمام حافظه آزاد بشه. اما خط دوم یک آبجکت جدید از فرم را میسازه و نمایش میده.

اما شاید گاهی اوقا لازم باشه که مثلا یک فرم رو نمایش بدیم بعد فرم دیگری رو نمایش بدیم و دوباره به همون آبجکتی که توی فرم اول داریم برگردیم ، اونوقته که باید بریم سراغ UserSession:
مثلا میتونیم توی UserSession یک پراپرتی Public به نام MyForm: TIWAppForm تعریف کنیم و کدمون رو اینطوری بنویسیم :

IWUserSession.Myform := TIwForm2.Create(WebApplication);


و بعد هر موقعه که لازم بود بریم سراغ این فرم میتونیم بنویسیم :

IWUserSession.MyFrom.Show;


البته IW در نسخه های بالاتر خودش آرایه ای از فرمهای ایجاد شده رو نگهداری میکنه و با کمک همین آرایه در ورژنهای بالاتر از دکمه Back در Browser هم پشتیبانی میکنه ...

*طراحی Laouyt و Template ها*

یکی از لذت بخشترین بخشهای برنامه نویسی با IW همین طراحی Layoutها با استفاده از Template  ها هست که امکانات بسیار جالب و مفیدی در اختیار برنامه نویس قرار میده البته این امکلن قبلا تا حدودی به همین شکل در WebSnap اراده شده بود اما در اینتراوب کاملتر شده و از اونجایی که امکانات بسیار بیشتری رو اینتراوب نسبت به وب اسنپ ارائه میکنه برای همین بیشتر به چشم میاد.

این دفعه اول یک مثال میزنم بعد توضیح میدم :

بعد از ایجاد یک برنامه جدید و ذخیره اون ، برنامه رو Save کنید ، حالا به سراغ فلدری که برنامه رو در اون ذخیره کردید برید و یک فلدر به نام Templates ایجاد کنید (در ورژنهای بالاتر IW نام این فلدر انتخابی میباشد) حالا مثلا FrontPage رو باز کنید و مثلا یک صفحه Log in طارحی کنید ، به هرشکلی که دوست دارید فقط جای EditBox کد کاربری و پسورد و دکمه تایید رو خالی بزارید.
زمانی که کار طراحیتون تموم شد در جای EdiotBox کد کاربری این متن رو بنویسید {%EdUserName%} و در جای کلمه عبور بنویسید {%EdPassword%} و در جای دکمه تایید بنویسید {%btOK%} بعد فایل طراحی شده رو مثلا با نام MainFrom.HTML در فلدر Templates ذخیره کنید . حالا به سراغ برنامه در دلفی برید اسم فرم رو بکنید MainForm، دو تا IWEdit روی صفحه بزارید با نامهای edUserNAmeو edPassword و یک دکمه با نام btOK بعد از تب IWControls یک TIWTemplateProcessor بر روی فرم بزارید و توب پراپرتیهای فرم هم مقدار LayoutMgr رو به همین TemplateProcessor مربوط بکنید.
کارمون تموم شد ، حالا IW برنامه رو اجرا خواهد کرد و کنترلهای خودش رو در داخل طارحی HTML ما اضافه خواهد کرد.

واقعا دلپذیر و لذت بخش هست ، فکرش رو بکنید Layoutها رو کاملا شخص دیگری حتی بعد از اینکه شما برنامه رو نوشتید میتونه طراحی بکنه و شما اصلا نگران قیافه برنامتون نخواهید بود، یک چیز جالب تر هرموقع که لازم باشه میشه قیافه صفحات رو عوض کرد بدون اینکه نیازی به دست زدن به کد و یا دوباره کامپایل کردن باشه ، یا حتی برنامه شما میتونه Skinها مختلفی داشته باشه....

پایان

----------


## www2006

بسمه تعالی 
  چند روز پیش دنبال پیدا کردن راه حل یکی از مشکلات تازه متولد شده (!) تو برنامم بودم که اتفاقی یه مطلبی درباره Intraweb برخوردم و ...

  خلاصه حیفم اومد اونو (بدلیل سادگی ، اختصار و مفید بودنش) تو سایت برنامه نویس مطرح نکنم ... 
  (البته جناب کوشا تمام نکات لازم را گفته اند ولی فکر میکنم خواندن این نوشته هم بد نباشه .. پس  با اجازه ی  آقای کوشا )


*قبل از شروع*

    2 تا نکته :
  1-    بر اساس BDS2006    کارها رو آدرس دهی میکنم . البته فکر نمیکنم تاثیری تو اصل ماجرا داشته باشه ..
  2- من تجربه ای در استفاده از کامپوننتهای اینتراوب ندارم ... 
  منظور!؟
  این مقاله بیشتر به کار کسانی می آید که در این زمینه مبتدی هستند .

*شروع*
  اولین قدم باز کردن یک پروژه ی جدید است ... از مسیر :
File ->  New -> Other

  در پنجره باز شده در قسمت Delphi Project  قسمت Intraweb  را انتخاب کرده و در قسمت سمت راست ، Intraweb Application Wizard را انتخاب کنید ..

  دقت کنید که در قسمت Application Type گزینه ی StandAlone Application  و در قسمت Options گزینه ی Create Use Session(Include DateModule)  انتخاب شده باشد ..
  مسیر Application  را هم وارد کنید ..

  خوب دکمه Ok را زده و وارد برنامه شوید .


*هدف : دسترسی داشتن به یک بانک در صفحه مورد نظر*
  اولین کار ما آماده کردن وب سرور است برای یک بانک اطلاعاتی. یک TTable   را روی  فرم خود drop  کنید . تنظیمات زیر را روی آن اعمال کنید :

DateBaseName : DBDEMOS TableName       :  animals.dbf

    حالا یک کامپوننت TDataSource   را روی فرم قرار داده و آن را به Table ای که قبلا روی فرم قرار داده اید وصل کنید .
  ( نکته : Active کردن Table   را فراموش نکنید .. )


*طراحی صفحه سایت* 
  کارهای زیر را انجام دهید :

_ تب  IW Standard_
 دو کامپوننت TIWLabel  روی فرم قرار دهید .. Caption آنها را Name   و Weight   بنامید ..

_تب IW Data_ 
  دو کامپوننت TIWDBEdit  روی فرم قرار دهید .. دیتا سورس هر دو را به DataSource1   وصل کرده و DataField یکی را به Name و دیگری را به Weight وصل کنید .
  یک TIWDBImage روی فرم قرار داده و مانند بالا آن را نیز به دیتاسورس وصل کنید ، DataFeild آن را هم به BMP .
  یک TIWDBNavigator روی فرم قرار داده و این یکی را نیز به DataSource1 وصل کنید .

  دکمه F9 را فشار دهید تا پروژه  اجرا شود ...
  فرم باز شده در واقع وب سروری است که میزبان Intraweb Module  ای که ساخته ایم میباشد .. مجددا F9 را بزنید ( یا File -> Excecute )
  خواهید دید که در مرورگر اینترنت سیستمتان صفحه ای که ساخته اید نشان داده میشود ..

*پایان*

  مقاله ی اصلی این نوشته را میتوانید در سایت Delphi3000.com پیدا کنید ..
  موفق باشید ...

----------


## حمیدرضاصادقیان

سلام
میخواستم ببینم آیا با intraweb سایت طراحی میشه؟ و اگر اینطوریه آیا میشه به جای استفاده از asp یا php از این استفاده کرد و آیا از این زبانهایی که نام بردم قویتر هست؟

----------


## gbg

اینتراوب هم از این زبان ها (asp) کمک میگیره برای ایجاد صفحه
ولی من کامپوننت های براش دیدم که امکان php رو هم اضافه می کنه
ولی محتوای برنامه اصلی به زبان پاسکال هست که به صورت یه فایل dll در میاد
خیلی ساده گفتم که متوجه بشی

----------


## حمیدرضاصادقیان

سلام.ممنون از پاسختون.حالا سوال من اینه.آیا برای طراحی یک سایت میتونیم از همین استفاده کنیم دیگه به asp.net یا php رو نندازیم؟ یا نه برای کار با این تکنولوژی حتماً باید این زبانها را هم یاد بگیریم؟ بعد از لحاظ سرعت و امنیت نیز قابل قیاس با زبانهای معروف هست.

----------


## ghabil

> اینتراوب هم از این زبان ها (asp) کمک میگیره برای ایجاد صفحه
> ولی من کامپوننت های براش دیدم که امکان php رو هم اضافه می کنه
> ولی محتوای برنامه اصلی به زبان پاسکال هست که به صورت یه فایل dll در میاد
> خیلی ساده گفتم که متوجه بشی


اینتراوب از هیچ زبان دیگه ای کمک نمیگیره اما قابلیت ترکیب شدن با تکنولوژیهای دیگه رو داره.




> سلام
> میخواستم ببینم آیا با intraweb سایت طراحی میشه؟ و اگر اینطوریه آیا میشه به جای استفاده از asp یا php از این استفاده کرد و آیا از این زبانهایی که نام بردم قویتر هست؟


بله میشه ، اینتراوب هم مزایا و معایب خودش رو نسبت به هرکدوم داره.




> سلام.ممنون از پاسختون.حالا سوال من اینه.آیا برای طراحی یک سایت میتونیم از همین استفاده کنیم دیگه به asp.net یا php رو نندازیم؟ یا نه برای کار با این تکنولوژی حتماً باید این زبانها را هم یاد بگیریم؟ بعد از لحاظ سرعت و امنیت نیز قابل قیاس با زبانهای معروف هست.


بله میتونید ، نمونش هم کار خودم هست برای وزارت ارتباطات و فن آْوری اطلاعات ، نرم افزار HRIS این وزارت خونه و تمامی شرکتهای تابع در کل کشور ، با دیتابیس اراکل و همینطور سیستم گزارشگیری این نرم افزار که یک Report Generator تحت وب هست.
قبلا هم با تکنولوژی دیگه ای نوشته شده بود که بخاطر کند بودن و داشتن مشکلات امنیتی تغییر کرد. الان هم بعد از گذشت 2 سال کاملا راضی هستند.

 متاسفانه اگر کلمه عبور نداشته باشید وارد هیچ یک از دو سیستم نمیتونید بشید.
ضمنا گرافیک کار هم ماله خوشونه  :گیج:   (تو مقاله آموزشی گفتم که با اینتراوب گرافیک رو میشه کاملا از برنامه نویسی جدا کرد)

----------


## delphi developer

البته یک روش دیگر برای استفاده از Intraweb نیز وجود داره که استفاده از گزینه Service Application در هنگام ایجاد پروژه intraweb است.به این ترتیب کامپایلر یه فایل exe تولید می کنه که میشود آن را به عنوان یه سرویس در Windows نصب و در لیست سرویس های ویندوز مشاهده کرد. بعد از نصب موفقیت آمیز سرویس با دستور :    application path> -install>
باید نام سرویستون رو از بین سرویس های ویندوز پیدا کرده و start کنید. بعد با آدرس http://servername:portNo می توانید به سایت خود دسترسی داشته باشید.

----------


## ب- تات

من با دلفی 7 کار میکنم و اینتراوب 5.01 رو دارم اما مشکل اینه که به خاطر محدودیتی که در استفاده این ورژن هست نمیتونم پورت رو ثابت نگه دارم. میشه کمکم کنید و یا بگید چطور میتونم این مشکل رو تو دلفی 7 برطرف کنم و یا یک ورژنی بالاتر که روی دلفی 7 بدون مشکل جواب بده ؟ البته میخوام حتما روی دلفی 7 کار کنم.

----------


## ب- تات

در ضمن اخیرا هم هینتراوب 9 را برای دلفی 7 گرفتم و نصب کردم . اون هم همین مشکل رو داره و پورتش ثابت نمیمونه لطفا اگر راهی هست ارائه فرمائید.

----------


## ghabil

تو همین مقاله توضیح دادم که!

----------


## ب- تات

میشه در مورد روشهای تهیه گزارش و چاپشون توسط intraweb  و ابزارهای این کار هم توضیح بدین

----------


## ghabil

اینتراوب خودش باری تهیه گزارش Rave رو پیشنهاد میکنه که فکر میکنم دوستان آموزشش رو اینجا گذاشتند.

----------


## ب- تات

> اینتراوب خودش باری تهیه گزارش Rave رو پیشنهاد میکنه که فکر میکنم دوستان آموزشش رو اینجا گذاشتند.


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
من که ندیدم  اما اگر ممکنه یا یک مثال یا یک لینک بذارین.

----------


## ب- تات

یک Function در قسمت UserSessionUnit توی Public  نوشتم حالا میخوام اون فانکشن رو در یکی از فرمها صدا بزنم . چطوری میتونم؟

----------


## ب- تات

اصلا این  UserSessionUnit  کار اصلیش چی هست ؟ آیا جایگزین همون کلاس   TUserSession هست که در نسخه های پایین تر دستی ایجاد میشه؟

----------


## ghabil

ترجیحا این سوالهارو توی فروم دلفی بنویسی بهتره ، که زیر این تاپیک فقط مقالات رو بزاریم ، اگه لطف کنی سوالت رو توی فروم دلفی بپرسی اگر بتونم حتما جواب میدم. ضمنا من اینجا رو هم دیر به دیر سر میزنم .
جواب این سوالت هم تا حدودی تو مقاله هست اگر کافی نبود دوباره بپرس جواب میدم.

----------


## Peresident_y

همین تور که بچه ها گفتند استفاده از Service Applicationو stand alone application روی سرور هاستی که کنترول و دسترسی نداری به علت محدودیت رو کانفیگ سرور کار سختی برای حل این مشکلات باید اپلیکت خودتونا به یه isapi تبدیل کنید

این واسه دلفی کارا
1.برای این کار باید عبارت program ابتدای برنامه را library تبدیل کنید
2.گام آخرم این که تو قسمت uses - 
IWInitStandAlone را به IWInitISAPI تبدیل کنید

قسمت مربوط به standalone
 
program GuessDLL;
uses
IWInitStandAlone,
Main in 'Main.pas' {formMain: TIWFormModuleBase},
ServerController in 'ServerController.pas' {IWServerController:
TDataModule};
{$R *.res}
begin
IWRun(TFormMain, TIWServerController);
end.

که بعد از تبدیلات بالا باید یه چیزی شبیه کد زیر باشه
 
library GuessDLL;
uses
IWInitISAPI,
ServerController in 'ServerController.pas' {IWServerController:
TIWServerControllerBase},
Main in 'Main.pas' {formMain: TIWFormModuleBase};
{$R *.RES}
begin
IWRun(TFormMain, TIWServerController);
end.

اینم واسهC ++ Builder
1.فایل bpr خودتونا با یه ادیتور متن باز کنید
2.متن <PROJECT value="MyProject.exe"/> راپیدا کنید و exe را به dll تغییر دهید
3.-tW -tWM"/> را پیدا کنید بعد از اولین w یه دونه d اضافه کنید
4.جمله بعدی که باید تغییر کنه این جملست
<ALLOBJ value"c0w32.obj $(PACKAGES) Memmgr.Lib sysinit.obj $(OBJFILES)"/>
عبارت c0w32.obj را باید به c0d32.obj 
5.بعد سیو کنید و پروژتونا با C++‎bulider باز کنید 
6.گام آخرم این که تو قسمت uses - 
IWInitStandAlone را به IWInitISAPI تبدیل کنید
7.پروژه را build کنید تموم

----------


## Peresident_y

هنگامی که با اینترا وب یک پروژه isapi را شروع میکنید در هنگام کامپایل حتما به مشکل بر میخورید واسه حل این مشکل 2 راه وجود داره از standalone استفاده کنید یا این که iis , همینطور دلفی را کانفیگ کنید
برای استفاده از راه دوم توصیه میکنم یه سری به http://dn.codegear.com/article/23024
بزنید با انجام این مراحل مشکلی واسه ران کردن برنامه ندارید نیازیم به standalone و تبدیل نیست

----------


## Peresident_y

> اصلا این UserSessionUnit کار اصلیش چی هست ؟ آیا جایگزین همون کلاس TUserSession هست که در نسخه های پایین تر دستی ایجاد میشه؟


اول این که UserSessionUnit چیه؟
فکر میکنم از نسخه 5 به بهد اضافه شده به نظر من یک فرم اضافی جدید ولی قسمتی از کارهای ServerController را بر عهده گرفت

کاربردش توی اجرای جلسه های کاری یا همون Session هاست
مثل تکنیک های COOKIES و URL 
و بسیار بسیار مهم چون بدون UserSession بعلت نداشتن متغیر گلوبال هیچ اطلاعی در مورد اطلاعات صفحه قبل نداریم مثلا برای ساخت پیج لوگین و چک کردن در بقیه صفحات حتما احتیاج میشه 
روش کار :
اول یه کلاس مطابق کد زیر تولید میکنید من ترجیح میدم این کارو داخل ServerController انجام بدم -بعد از کلاس فرم اصلی-

TYPE
...
KWEBSession = class(TComponent)
public
  username:string;
  PASSWORD:string;
  end; 

روش مقدار دهی در فرم یک
with KWEBSession(WebApplication.Data) do begin
  username:=IWEdit1.Text;
end;
  tiwform1.Create(WebApplication).Show;
Release;
روش بدست آوردن اطلاعات در فرم دوم
این کار معمولا در ایونت CREATE FORM انجام میشه
with KWEBSession(WebApplication.Data) do begin
  IWEdit1.text:= username;
END;

----------


## Peresident_y

> نوشته شده توسط *ghabil*  
> _اینتراوب خودش باری تهیه گزارش Rave رو پیشنهاد میکنه که فکر میکنم دوستان آموزشش رو اینجا گذاشتند._





> میشه در مورد روشهای تهیه گزارش و چاپشون توسط intraweb و ابزارهای این کار هم توضیح بدین


من ندیدم کسی آموزشی در مورد REPORT نوشته باشه اگه کسی خواست بگید واسش میل کنم اگه کسی هم قبلا چیزی ننوشته بگید همین جا بنویسم

----------


## ب- تات

هرچند تاپيك قديميه اما اگه ميشه در مورد Report اگه مطلبي داريد عنايت كنيد و ارائه بدين

----------


## Developer Programmer

DLL رو چطوری میشه از داخل IntraWeb فراخوانی کرد؟

----------


## farar_1

سوال قبل رو اگه کسی بده منم  ممنون  میشم

----------

