PDA

View Full Version : آنچه برای نوشتن یک برنامه اینتراوب نیاز دارید



ghabil
پنج شنبه 09 آذر 1385, 00:20 صبح
اینتراوب محصول شرکت 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
جمعه 22 دی 1385, 20:53 عصر
بسمه تعالی

چند روز پیش دنبال پیدا کردن راه حل یکی از مشکلات تازه متولد شده (!) تو برنامم بودم که اتفاقی یه مطلبی درباره 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 پیدا کنید ..
موفق باشید ...

حمیدرضاصادقیان
شنبه 30 دی 1385, 07:32 صبح
سلام
میخواستم ببینم آیا با intraweb سایت طراحی میشه؟ و اگر اینطوریه آیا میشه به جای استفاده از asp یا php از این استفاده کرد و آیا از این زبانهایی که نام بردم قویتر هست؟

gbg
شنبه 30 دی 1385, 19:40 عصر
اینتراوب هم از این زبان ها (asp) کمک میگیره برای ایجاد صفحه
ولی من کامپوننت های براش دیدم که امکان php رو هم اضافه می کنه
ولی محتوای برنامه اصلی به زبان پاسکال هست که به صورت یه فایل dll در میاد
خیلی ساده گفتم که متوجه بشی

حمیدرضاصادقیان
شنبه 30 دی 1385, 21:03 عصر
سلام.ممنون از پاسختون.حالا سوال من اینه.آیا برای طراحی یک سایت میتونیم از همین استفاده کنیم دیگه به asp.net یا php رو نندازیم؟ یا نه برای کار با این تکنولوژی حتماً باید این زبانها را هم یاد بگیریم؟ بعد از لحاظ سرعت و امنیت نیز قابل قیاس با زبانهای معروف هست.

ghabil
سه شنبه 15 اسفند 1385, 14:58 عصر
اینتراوب هم از این زبان ها (asp) کمک میگیره برای ایجاد صفحه
ولی من کامپوننت های براش دیدم که امکان php رو هم اضافه می کنه
ولی محتوای برنامه اصلی به زبان پاسکال هست که به صورت یه فایل dll در میاد
خیلی ساده گفتم که متوجه بشی

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


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

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


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

بله میتونید ، نمونش هم کار خودم هست برای وزارت ارتباطات و فن آْوری اطلاعات ، نرم افزار HRIS این وزارت خونه و تمامی شرکتهای تابع در کل کشور (http://personel.ict.gov.ir:8886)، با دیتابیس اراکل و همینطور سیستم گزارشگیری (http://personel.ict.gov.ir:8887) این نرم افزار که یک Report Generator تحت وب هست.
قبلا هم با تکنولوژی دیگه ای نوشته شده بود که بخاطر کند بودن و داشتن مشکلات امنیتی تغییر کرد. الان هم بعد از گذشت 2 سال کاملا راضی هستند.

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

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

ب- تات
دوشنبه 27 فروردین 1386, 12:03 عصر
من با دلفی 7 کار میکنم و اینتراوب 5.01 رو دارم اما مشکل اینه که به خاطر محدودیتی که در استفاده این ورژن هست نمیتونم پورت رو ثابت نگه دارم. میشه کمکم کنید و یا بگید چطور میتونم این مشکل رو تو دلفی 7 برطرف کنم و یا یک ورژنی بالاتر که روی دلفی 7 بدون مشکل جواب بده ؟ البته میخوام حتما روی دلفی 7 کار کنم.

ب- تات
دوشنبه 27 فروردین 1386, 14:11 عصر
در ضمن اخیرا هم هینتراوب 9 را برای دلفی 7 گرفتم و نصب کردم . اون هم همین مشکل رو داره و پورتش ثابت نمیمونه لطفا اگر راهی هست ارائه فرمائید.

ghabil
سه شنبه 28 فروردین 1386, 11:32 صبح
تو همین مقاله توضیح دادم که!

ب- تات
سه شنبه 28 فروردین 1386, 15:07 عصر
میشه در مورد روشهای تهیه گزارش و چاپشون توسط intraweb و ابزارهای این کار هم توضیح بدین

ghabil
سه شنبه 28 فروردین 1386, 21:02 عصر
اینتراوب خودش باری تهیه گزارش Rave رو پیشنهاد میکنه که فکر میکنم دوستان آموزشش رو اینجا گذاشتند.

ب- تات
چهارشنبه 29 فروردین 1386, 07:07 صبح
اینتراوب خودش باری تهیه گزارش Rave رو پیشنهاد میکنه که فکر میکنم دوستان آموزشش رو اینجا گذاشتند.

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

ب- تات
یک شنبه 09 اردیبهشت 1386, 12:38 عصر
یک Function در قسمت UserSessionUnit توی Public نوشتم حالا میخوام اون فانکشن رو در یکی از فرمها صدا بزنم . چطوری میتونم؟

ب- تات
دوشنبه 10 اردیبهشت 1386, 08:58 صبح
اصلا این UserSessionUnit کار اصلیش چی هست ؟ آیا جایگزین همون کلاس TUserSession هست که در نسخه های پایین تر دستی ایجاد میشه؟

ghabil
جمعه 14 اردیبهشت 1386, 22:32 عصر
ترجیحا این سوالهارو توی فروم دلفی بنویسی بهتره ، که زیر این تاپیک فقط مقالات رو بزاریم ، اگه لطف کنی سوالت رو توی فروم دلفی بپرسی اگر بتونم حتما جواب میدم. ضمنا من اینجا رو هم دیر به دیر سر میزنم .
جواب این سوالت هم تا حدودی تو مقاله هست اگر کافی نبود دوباره بپرس جواب میدم.

Peresident_y
یک شنبه 05 اسفند 1386, 01:13 صبح
همین تور که بچه ها گفتند استفاده از 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
یک شنبه 05 اسفند 1386, 01:25 صبح
هنگامی که با اینترا وب یک پروژه isapi را شروع میکنید در هنگام کامپایل حتما به مشکل بر میخورید واسه حل این مشکل 2 راه وجود داره از standalone استفاده کنید یا این که iis , همینطور دلفی را کانفیگ کنید
برای استفاده از راه دوم توصیه میکنم یه سری به http://dn.codegear.com/article/23024
بزنید با انجام این مراحل مشکلی واسه ران کردن برنامه ندارید نیازیم به standalone و تبدیل نیست

Peresident_y
یک شنبه 05 اسفند 1386, 01:59 صبح
اصلا این 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
یک شنبه 05 اسفند 1386, 02:25 صبح
نوشته شده توسط ghabil http://barnamenevis.org/forum/images/buttons/viewpost.gif (http://barnamenevis.org/forum/showthread.php?p=328889#post328889)
اینتراوب خودش باری تهیه گزارش Rave رو پیشنهاد میکنه که فکر میکنم دوستان آموزشش رو اینجا گذاشتند.

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

ب- تات
جمعه 04 مرداد 1387, 09:32 صبح
هرچند تاپيك قديميه اما اگه ميشه در مورد Report اگه مطلبي داريد عنايت كنيد و ارائه بدين

Developer Programmer
دوشنبه 13 آبان 1387, 09:51 صبح
DLL رو چطوری میشه از داخل IntraWeb فراخوانی کرد؟

farar_1
سه شنبه 26 آبان 1388, 08:51 صبح
سوال قبل رو اگه کسی بده منم ممنون میشم