Дата регистрации 28 Февраль 2024
15 Продаж 
                                                                            ![/*  ф - я  GetDeviceCaps harakteristika olishga yordam beradi.
   LOGP IXELSX - кол-во пикселей на дюйм по X */
dpiX = GetDeviceCaps(Prn->Handle,LOGPIXELSX);
dpiY = GetDeviceCaps(Prn->Handle,LOGPIXELSY);
kx = dpiX / Screen->PixelsPerInch;
ky = dpiY / Screen->PixelsPerInch;
px = LEFT_MARGIN / 2.54 * dpiX;
py = TOP_MARGIN / 2.54 * dpiY;
 // mundarijadagi jadval kordinatalariga jo`natamiz.
p[0] = px;
for (i = 1; i < 5; i++ )
p[i] = p[i-1] + StringGrid1->ColWidths[i-1]* kx + i;
 Prn->BeginDoc(); //  открытьпечать
 // mundrija burchagi
 Prn->Canvas->Font->Name = Label1->Font->Name;
 Prn->Canvas->Font->Size = Label1->Font->Size;
 Prn->Canvas->TextOut(px,py,Label1->Caption);
 // mundarijada StringGrid1 mavjud
py = py + Label1->Font->Size * 2 * ky;
x1 = px; y1 = py; // mundarija burchagidagi chapdan yuqoridagi
 Prn->Canvas->Font->Name = StringGrid1->Font->Name;
 Prn->Canvas->Font->Size = StringGrid1->Font->Size;
x2 = p[4] + StringGrid1->ColWidths[4]* kx;
y2 = py +
   StringGrid1->RowCount * StringGrid1->RowHeights[1] * ky;
for ( j = 0; j < StringGrid1->RowCount; j++)
 {
  // satrlar mundarijasi
for (i = 0; i < StringGrid1->ColCount; i++)
  {
   Prn->Canvas->TextOut(p[i],py,StringGrid1->Cells[i][j]);
   //  гор -> линия
   Prn->Canvas->MoveTo(p[0],py);
   Prn->Canvas->LineTo(x2,py);](https://docx.uz/documents/fc2bc5bc-da6f-4b37-8898-47e7065ef676/page_16.png?v=3) 
                                                                             
                                                                            ![}
py = py+ StringGrid1->RowHeights[j]* ky;
 }
 // vertikal yo`nalishdagi liniya
for ( i = 0; i < StringGrid1->ColCount; i++ )
 {
  Prn->Canvas->MoveTo(p[i],y1);
  Prn->Canvas->LineTo(p[i],y2);
 }
 // o`ng chegara
 Prn->Canvas->MoveTo(x2,y1);
 Prn->Canvas->LineTo(x2,y2);
 // pastki chegara
 Prn->Canvas->MoveTo(x1,y2);
 Prn->Canvas->LineTo(x2,y2);
py = y2 + 0.5 / 2.54 * dpiY; //bu yerda 1 – bu 1sm .
 Prn->Canvas->TextOut(p[3],py,Label2->Caption);
 Prn->EndDoc(); // chop etish to`xtatiladi
}
// tayyor knopkasi bosiladi
void __fastcall TForm1::Button1Click(TObject *Sender)
{
float summ;
summ = 0;
for ( int i = 1; i < 11; i++)
 {
  // bajari;ayotganda summa jadvali bo`shligicha qolsa
  // StrToFloat funksiyasida xatolik ro`y bergan bo`ladi.
try
  {
summ += StrToFloat(StringGrid1->Cells[4][i]);
  }
catch (Exception &e)
  {
  }
 }
 Label2->Caption = " Всего : " + FloatToStr(summ) + "  руб .";
}](https://docx.uz/documents/fc2bc5bc-da6f-4b37-8898-47e7065ef676/page_17.png?v=3) 
                                                                             
                                                                            ![else
   StringGrid1->Cells[0][i] = IntToStr(i);
int w = 0;
for (int i = 0; i < StringGrid1->ColCount; i++)
  w += StringGrid1->ColWidths[i];
 // StringGrid razmeri bilan ustanovka qilinadi
 // jadval va chegaralangan satrlar
 StringGrid1->Width = w + StringGrid1->ColCount +1 ;
 StringGrid1->Height =
  StringGrid1->DefaultRowHeight * StringGrid1->RowCount +
  StringGrid1->RowCount + 1;
}
#include "Printers.hpp"
// pechat knopkasi bosiladi
void __fastcall TForm1::Button2Click(TObject *Sender)
{
 TPrinter *Prn; //  принтер
 #define LEFT_MARGIN 2 // chapdan 2sm
 #define TOP_MARGIN 2 // tepadan 2sm
float dpiX, dpiY; //X va Y ni chop etishga ruxsat beriladi
float kx, ky;  //  коэф . Ekran kordinatasini hisobga olgan holda
 // mundarija
int p[5]; // kolonok o`rni
int x1,y1,x2,y2; 
int px, py; // nuqta ko`rsatgichi
int i, j;
 /* Ekran va printerning shakllari har xil, shuning uchun ham 
Ekran va printerdagi kerakli razmerga ega bo`lishi uchun, 
Ekrandagi kordinata nuqtalari kordinata prneda boshqariladi 
Va koeefitsiyentga oshiriladi, .
Printer ruxsat berilishiga qarab, misol uchun:
Agar printer ruxsati 300dpi 
Unda koeffitsiyentlarteng 3.125
Ekran kengligi 96 dpi */
 Prn = Printer ();](https://docx.uz/documents/fc2bc5bc-da6f-4b37-8898-47e7065ef676/page_15.png?v=3) 
                                                                             
                                                                             
                                                                             
                                                                             
                                                                             
                                                                             
                                                                            ![Hisobot” programmasini kiritamiz
#include <vcl.h>
#pragma hdrstop
#include "SheetFrm.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
__fastcall TForm1::TForm1(TComponent* Owner)
 : TForm(Owner)
{
}
void __fastcall TForm1::FormCreate(TObject *Sender)
{
  // ***  настроитьтаблицу  ***
 StringGrid1->Options
<<goEditing    // taxrir qilishga ruxsat berildi
<<goTabs;    // <Tab> - keyingi jadvalga o`tish
//   << goAlwaysShowEditor; // doimo usor ko`rsatilishi kerak
 // jadval eniga
 StringGrid1->Cells[0][0] = "";
 StringGrid1->Cells[1][0] = "  nom";
 StringGrid1->Cells[2][0] = " baho";
 StringGrid1->Cells[3][0] = " kilo";
 StringGrid1->Cells[4][0] = " summa";
 // jadval kengligida
 StringGrid1->ColWidths[0] = 30;
 StringGrid1->ColWidths[1] = 250;
 StringGrid1->ColWidths[2] = 80;
 StringGrid1->ColWidths[3] = 50;
 StringGrid1->ColWidths[4] = 80;
 // birinchi jadvalni to`ldirish
for ( int i = 1; i < 11; i++)
if (i < 10)
   StringGrid1->Cells[0][i] = " " + IntToStr(i);](https://docx.uz/documents/fc2bc5bc-da6f-4b37-8898-47e7065ef676/page_14.png?v=3) 
                                                                             
                                                                             
                                                                             
                                                                             
                                                                             
                                                                             
                                                                             
                                                                    C++ da Dialog darchalar va oddiy boshqarish elementlari.
Dialog darchalar va oddiy boshqarish elementlari