نمایش نتایج 1 تا 4 از 4

نام تاپیک: مشكل تازه با پرينتر سوزني LQ1170

  1. #1

    مشكل تازه با پرينتر سوزني LQ1170

    با سلام:
    من يك گزارش دارم كه حتما بايد با پرينتر سوزني LQ1170 Epson پرينت گرفته بشه اما بعد از چند بار كه درست چاپ مي كنه يكي از كاغذها خراب مي شه .. خطها به صورت نا منظم و جابه جا چاپ ميشن. با FastReport و Quick Report امتحان كردم هر دو همين مشكل رو دارن. حتا يك فايل Word هم امتحان كردم اما اون هم جا به جا چاپ مي شد. در ضمن با 5-6 تا پرينتر هم امتحان كردم همين مشكل رو داشتن .
    اگر كمكم كنيد ممنون مي شم............

  2. #2
    کاربر دائمی
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    آنجا سرای ابدی است
    پست
    2,011

    نقل قول: مشكل تازه با پرينتر سوزني LQ1170

    fبه نظر می رسه باید مشکلتونو با سازندگان پرینتز مطرج کنید.

  3. #3

    نقل قول: مشكل تازه با پرينتر سوزني LQ1170

    همانطور كه همه اساتيد اطلاعا دارن پرينتر سوزني به ورت كاراكتر چاپ مي كنه و اگر شما از fastreport استفاده كنيد گزارش رو به صورت تصوير چاپ مي كنه كه هدف اصلي استفاده از پرينتر سوزني كه سرعت هست رو از بين مي بره ، البته فست ريپورت امكاني داره كه شما مي تونيد از ابتدا نوع گزارش خودتون رو از نوع چاپگر سوزني انتخاب كنيد ولي متاسفانه فقط براي انگليسي كار مي كنه چون فونت هاي فارسي تحت داس با ويندوز تفاوت دارن.

    من سال گذشته زحمت زيادي كشيدم تا تونستم اين مشكل رو حل كنم حال قصد آموزش اون رو در اينجا دارم مطمنم بدرد خيلي ها مي خوره چون خودم خيلي اذيت شدم(با سعي و خطا كاراكتر ها رو پيدا كردم و جايگزين).

    اول اين تابع رو كه نوشتم به برنامه تون اضافه كنيد.


    function ToIranSystem(Str:String):String;
    function IsConnected(Ch:Char):Boolean;
    Begin
    If Ord(Ch) in [142,147,149,151,153,155,157,159,161,168,170,172,17 4,175,224,227,228,231,232,234,236,238,240,243,245, 247,250,254] Then result:=True else Result:=False;
    End;
    function invert(St:String):String;
    Var I:Integer;
    S1:string;
    B:Boolean;
    Begin

    If Length(St)<=1 Then S1:=St else
    Begin
    B:=True;
    For I:=1 to Length(St) do
    If (Ord(St[I]) in [140..175,224..254]) Then
    //If (Ord(St[I]) in [32,125..254]) Then
    B:=False;
    If B Then
    Begin
    S1:='';
    For I:=Length(St) downto 1 do
    S1:=S1+St[I];
    End else S1:=St;
    End;
    Result:=S1;

    End;

    Var Ch0,Ch1:Char;
    InSt,OutSt,Tmp,St:String;
    I:Integer;
    Eng,B:Boolean;
    Begin
    If Length(Str)=0 Then
    Begin
    Result:='';
    Exit;
    End;
    B:=True;
    For I:=1 to Length(Str) do
    If (Ord(Str[I]) in [129,141,142,143,144,152,192..230,236,237]) Then
    //If (Ord(St[I]) in [32,125..254]) Then
    B:=False;
    If B Then
    Begin
    Result:=Str;
    Exit;
    End;
    Begin
    InSt:=Str+' ';
    OutSt:='';
    Ch0:=' ';
    Ch1:=InSt[1];
    Eng:=False;
    For I:=1 to Length(InSt) do
    Begin
    Case Ch1 of
    '0': Ch1:=#128;
    '1': Ch1:=#129;
    '2': Ch1:=#130;
    '3': Ch1:=#131;
    '4': Ch1:=#132;
    '5': Ch1:=#133;
    '6': Ch1:=#134;
    '7': Ch1:=#135;
    '8': Ch1:=#136;
    '9': Ch1:=#137;
    'Â': Ch1:=#141;
    'Æ': Ch1:=#142;
    'È': Ch1:=#147;
    '': Ch1:=#149;
    'Ê': Ch1:=#151;
    'Ë': Ch1:=#153;
    'Ì': Ch1:=#155;
    '': Ch1:=#157;
    'Í': Ch1:=#159;
    'Î': Ch1:=#161;
    'Ï': Ch1:=#162;
    'Ð': Ch1:=#163;
    'Ñ': Ch1:=#164;
    'Ò': Ch1:=#165;
    'Ž': Ch1:=#166;
    'Ó': Ch1:=#168;
    'Ô': Ch1:=#170;
    'Õ': Ch1:=#172;
    'Ö': Ch1:=#174;
    'Ø': Ch1:=#175;
    'Ù': Ch1:=#224;
    'Ý': Ch1:=#234;
    'Þ': Ch1:=#236;
    'ß': Ch1:=#238;
    '': Ch1:=#240;
    'á': Ch1:=#243;
    'ã': Ch1:=#245;
    'ä': Ch1:=#247;
    'æ': Ch1:=#248;
    'í': Ch1:=#254;
    'Ç': If IsConnected(Ch0) Then Ch1:=#145 else Ch1:=#144;
    'Ú': If IsConnected(Ch0) Then Ch1:=#227 else Ch1:=#228;
    'Û': If IsConnected(Ch0) Then Ch1:=#231 else Ch1:=#232;
    'å': If IsConnected(Ch0) Then Ch1:=#250 else Ch1:=#251;
    End;

    If Not(Ord(Ch1) in [142,145,147,149,151,153,155,157,159,161,162,163,16 4,165,166,168,170,172,174,175,224,227,228,231,232, 234,236,238,240,243,245,247,248,250,254]) Then
    Case Ord(Ch0) of
    142:Ch0:=#143;
    147:Ch0:=#146;
    149:Ch0:=#148;
    151:Ch0:=#150;
    153:Ch0:=#152;
    155:Ch0:=#154;
    157:Ch0:=#156;
    159:Ch0:=#158;
    161:Ch0:=#160;
    168:Ch0:=#167;
    170:Ch0:=#169;
    172:Ch0:=#171;
    174:Ch0:=#173;
    227:Ch0:=#226;
    228:Ch0:=#225;
    231:Ch0:=#230;
    232:Ch0:=#229;
    234:Ch0:=#233;
    236:Ch0:=#235;
    238:Ch0:=#237;
    240:Ch0:=#239;
    243:Ch0:=#241;
    245:Ch0:=#244;
    247:Ch0:=#246;
    254:Ch0:=#252;
    250:Ch0:=#249;
    251:Ch0:=#249;
    End;
    If I=1 Then
    OutSt:=Ch1
    else
    OutSt:=Ch1+Ch0+Copy(OutSt,2,Length(OutSt)-1);// else
    If I<>Length(InSt) Then
    Begin
    Ch0:=Ch1;
    Ch1:=InSt[i+1];
    End;
    End;
    // OutSt:=InSt;
    Tmp:='';
    St:='';
    Eng:=True;
    For I:=1 to Length(OutSt) Do
    Begin
    If (Ord(OutSt[I]) in [32]) Then
    Tmp:=Tmp+OutSt[I]
    else
    If (Ord(OutSt[I]) in [140..175,224..254]) Then
    // If (Ord(OutSt[I]) in [32,125..254]) Then
    Begin
    If Eng Then
    Begin
    Tmp:=Invert(Tmp);
    St:=St+Tmp;
    Tmp:=OutSt[I];
    End else begin
    Tmp:=Tmp+OutSt[I];
    End;
    Eng:=False;
    End else
    Begin
    If (Not Eng) Then
    Begin
    Tmp:=Invert(Tmp);
    St:=St+Tmp;
    Tmp:=OutSt[I];
    End else begin
    Tmp:=Tmp+OutSt[I];
    End;
    Eng:=True;
    End;
    End;
    If Eng Then
    Tmp:=Invert(Tmp);
    St:=St+Tmp;
    outst:=st;
    Result:=OutSt;
    End;
    End;

  4. #4

    نقل قول: مشكل تازه با پرينتر سوزني LQ1170

    در مرحله بعد روي آيكون فست ريپورت كليك نيد و در رويداد OnUserFunction اين رو كپي كنيد.



    If UpperCase(MethodName) = Uppercase('ToIranSystem') then
    Result := ToIranSystem(Params[0]);



    روي فرم خود دابل كليك كنيد و در رويداد OnCreate فرم اين كد رو اضافه كنيد


    frxReport1.AddFunction('Function ToIranSystem(Str:String):String;','ãÊÝÑÞå',' ÌåÊ Ç ãÊä ÝÇÑÓí ÏÑ ÒÇÑÔ åÇí ÈÇ ÇÑ ÓæÒäí ÇÒ Çíä ÊÇÈÚ ÈÑÇí ÊÈÏíá ãÊä ÝÇÑÓí Èå ãÊä ÞÇÈá Ç ÇÓÊÝÇÏå ãí ÔæÏ');



    حالا مي تونيد روي آيكون فست ريپورت دابل كليك كنيد و در بخش طراحي اگر مي خوايد متني به صورت ايران سيستم روي پرينتر سوزني چاپ بشه در رويداد OnAfterdata
    با استفاده از همين تابع متن رو جايگزين كنيد

    قدر اين كد رو بدونيد

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •