PDA

View Full Version : استفاده از جمع اقلام در فرم جدید و چاپ آن



nima_8m
شنبه 03 شهریور 1397, 14:19 عصر
با سلام به اساتید گرامی
آقا من یه فرم دارم که مجموع اقلام یک فاکتور رو نشون میده حالا میخوام این عدد تو یه فرم دیگه نمایش داده بشه و بتونم چاپش کنم لطفا راهنمایی بفرمایید
سپاس

farhad_shiri_ex
شنبه 03 شهریور 1397, 17:51 عصر
با سلام به اساتید گرامی
آقا من یه فرم دارم که مجموع اقلام یک فاکتور رو نشون میده حالا میخوام این عدد تو یه فرم دیگه نمایش داده بشه و بتونم چاپش کنم لطفا راهنمایی بفرمایید
سپاس

اگراین عدد را در زمان اجرا تو فرم اولی که گفتید می سازید که خوب کافی که در فرم اول یک خصیصه ایجاد کنید و در زمان جمع کردن عدد اون را در اون خصیصه قرار بدید و بعد در زمان اجرا از فرم اول یک آبجکت بسازید و در فرم دوم از اون خصیصه استفاده کنید البته این روش شی گرائی بود.
اگر نه که فکر کنم میتونید یک متغیر سراسری تعریف کنید و بهش دسترسی پیدا کنید!
البته اگر منظورتون را درست متوجه شده باشم..

nima_8m
یک شنبه 04 شهریور 1397, 11:14 صبح
سلام ممنون از پاسخ شما
یه مشکل عمده اینه من به فاکس تسلطی ندارم
شما درست متوجه شدین
امکان این نیست مقدار تکس باکس رو به فرم جدید پاس کنم فقط مقدار تکس باکس رو میخوام

farhad_shiri_ex
یک شنبه 04 شهریور 1397, 13:40 عصر
سلام ممنون از پاسخ شما
یه مشکل عمده اینه من به فاکس تسلطی ندارم
شما درست متوجه شدین
امکان این نیست مقدار تکس باکس رو به فرم جدید پاس کنم فقط مقدار تکس باکس رو میخوام

با استفاده از دستور public یک متغیر سراسری تعریف کنید و جایی که تکست باکس مقدار میگیره ست کنید و خوب بالطبع در کل برنامه می تونید ازش استفاده کنید.

nima_8m
سه شنبه 24 مهر 1397, 13:23 عصر
با استفاده از دستور public یک متغیر سراسری تعریف کنید و جایی که تکست باکس مقدار میگیره ست کنید و خوب بالطبع در کل برنامه می تونید ازش استفاده کنید.

با سلام
آقا همانطور که دستور داده بودین من متغیر ها رو تعریف کردم و اطلاعات رو از فرم اصلی به فرم مورد نظر منتقل کردم و اطلاعات کامل و درست هستش ولی وقتی تو چاپ میگم این متغییر رو چاپ کن متاسفانه درست چاپ نمیکنه و یه عدد خیلی بزرگتری رو چاپ میکنه که نمیدونم از کجاست
خب کدهای که نوشتم به این صورت هست
ابتدا کدی که در فرم اصلی هست و هیچ ایرادی نداره و میخوایم چاپ کنیم


PUBLIC a,b,c
SELECT baste_h_ser
IF .NOT. EOF() .AND. .NOT. BOF()
r = RECNO()
COUNT FOR ser<>0 .AND. b_o_no<>0 TO sw
thisform.text13.value = sw
a=thisform.text13.Value
SUM baste_h_ser.met TO sw FOR ser<>0 .AND. b_o_no<>0
thisform.text7.value = sw
b=thisform.text7.Value
SUM baste_h_ser.wight TO sw FOR ser<>0 .AND. b_o_no<>0
thisform.text8.value = sw
c=thisform.text8.Value
SUM baste_h_ser.arz TO sw FOR ser<>0 .AND. b_o_no<>0
thisform.text6.value = sw
GOTO r
ENDIF


متغیر های که من تعریف کردم و به فرم مورد نظر انتقال دادم a,b,c که تو فرم جدید درست چاپ میشن
حالا کدهای که تو فرم مورد نظر فراخونی کردم به اینورت هست


PUBLIC metra
metra = 0
thisform.text1.Value=a
thisform.text2.Value=b
metra=thisform.text2.Value
thisform.text3.Value=c

خوب با این روش a,b,c دقیق نمایش داده میشه ولی متغیر metra که مقدار تکس باکس 2 هست و میخوام چاپ بشه درست عمل نمیکنه
لطفا یه بررسی بفرمایید راهنمایی کنید
ممنون و سپاس از لطفتون

nima_8m
یک شنبه 29 مهر 1397, 19:39 عصر
ممنون میشم به این کد ها یه نگاه بندازید و ایرادش و بفرمایید مشکل من برطرف شه

farhad_shiri_ex
دوشنبه 30 مهر 1397, 16:15 عصر
ممنون میشم به این کد ها یه نگاه بندازید و ایرادش و بفرمایید مشکل من برطرف شه


PUBLIC metra
metra = 0
thisform.text1.Value=a
thisform.text2.Value=b
metra=thisform.text2.Value
thisform.text3.Value=c


بهتره مقدار متغیر b را مستقیم در مقدار metra ذخیره کنید واز این متغیر استفاده کنیدالبته اگر به مقدار متغیر b که در این بلاک تعریف شده اطمینان دارید که صحیح هست. یعنی اینطوری ...


PUBLIC metra
thisform.text1.Value=a
thisform.text2.Value=b
metra=b
thisform.text3.Value=c


حالا اگر مقدار این متغیر metra را چاپ میکنید و عدد دیگه ای چاپ میشه پس یکجا دیگه دارید مقدار متغیر b را تغییر میدید و اگر هم که بازهم درست نشد حتما از خروجی تون یک اسکرین شات بذارید ببینم.

البته اینطوری هم فکر کنم بتونید استفاده کنید البته ببخشید من الان محیط وی فاکس ندارم همینطوری از http://learnvfp.mihanblog.com/ این وبلاگ جناب حسین زاده کپی کردم

DEFINE CLASS Writer AS custom
public a = 0
public b = 0
public c = 0

procedure write
SELECT baste_h_ser
IF .NOT. EOF() .AND. .NOT. BOF()
r = RECNO()
COUNT FOR ser<>0 .AND. b_o_no<>0 TO sw
thisform.text13.value = sw
this->a=thisform.text13.Value
SUM baste_h_ser.met TO sw FOR ser<>0 .AND. b_o_no<>0
thisform.text7.value = sw
this->b=thisform.text7.Value
SUM baste_h_ser.wight TO sw FOR ser<>0 .AND. b_o_no<>0
thisform.text8.value = sw
this->c=thisform.text8.Value
SUM baste_h_ser.arz TO sw FOR ser<>0 .AND. b_o_no<>0
thisform.text6.value = sw
GOTO r
ENDIF
endproc
ENDDEFINE

DEFINE CLASS Consumer AS custom

public mWriter AS Writer

procedure reader
mWriter.write()
thisform.text1.Value=mWriter.a
thisform.text2.Value=mWriter.b
metra=write.b
thisform.text3.Value=write.c

endproc

ENDDEFINE

nima_8m
سه شنبه 01 آبان 1397, 23:01 عصر
درود بر شما
سپاس از وقتی که میزارید
متاسفانه کدی که فرستادین از نظر syntax اشکال داشت سه متغیر a,b,c و همچنین public mWriter AS Writer
عکس رو میفرستم که ملاحظه بفرمایید.
149133149134149135

farhad_shiri_ex
چهارشنبه 02 آبان 1397, 00:29 صبح
درود بر شما
سپاس از وقتی که میزارید
متاسفانه کدی که فرستادین از نظر syntax اشکال داشت سه متغیر a,b,c و همچنین public mWriter AS Writer
عکس رو میفرستم که ملاحظه بفرمایید.
149133149134149135

عزیز دل برادر خود دستور تعریف کلاس را بردی توی متد refresh یک کلاس کپی کردی؟!!!

اگر میخواهی توی کلاس به صورت ویژوالی استفاده کنی می تونی از مثالی که درست کردم استفاده کنید

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

149137

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