Witamy na forum PC Format Zapraszamy do REJESTRACJI


Użytkownicy przeglądający ten wątek: 1 gości

Problem Delphi

#11
RE: Problem Delphi
Jeżeli chodzi Ci o ikone programu wykonywalnego to robisz skrót do niego i wybierasz właściwości tego skrótu i tam jest opcja zmiany ikony.
"Mów to co myślisz i myśl to co mówisz"
Już niedługo rewolucja, powstaje it-team.pl
Chcesz się przyłączyć? Pokaż na co Ciebie staćOczko
 System operacyjny: windows_xp_2003 Przeglądarka: opera
#12
RE: Problem Delphi
Czyli mam wejść w C:/Program files/Borland/Delphi7/Projects i tam jest Pojekt1 i mam go skopiowac i wkleić na pulit?
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#13
RE: Problem Delphi
możesz go skopiować gdzie tylko chcesz tylko sam skrót nie będzie Ci działał bez głównego programu
"Mów to co myślisz i myśl to co mówisz"
Już niedługo rewolucja, powstaje it-team.pl
Chcesz się przyłączyć? Pokaż na co Ciebie staćOczko
 System operacyjny: windows_xp_2003 Przeglądarka: opera
#14
RE: Problem Delphi
Aha dzięki a jeszcze chciałbym dać możliwość drukowania.
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#15
RE: Problem Delphi
Cytat:Należy korzystać z funkcji WinAPI operujących na drukarkach:

Kod:
uses WinSpool,Printers;

procedure TForm1.Button1Click(Sender: TObject);
var Size,n:Integer;
    H:THandle;
    Info:PAddJobInfo1;
    F:TextFile;
    sPrinterName,sDriver,sPort:array[0..255]of Char; // sDriver i sPort nie będą
                                                     // wykorzystane
begin
Printer.GetPrinter(sPrinterName,sDriver,sPort,h);

OpenPrinter(sPrinterName,H,nil);
try
  AddJob(H,1,nil,0,Size); // pobranie rozmiaru bufora

  GetMem(Info,Size);

  try
   // Poniższa funkcja zwraca nam nazwę pliku do którego możemy zapisywać
   AddJob(H,1,Info,Size,n);

   // Tutaj zapisujemy do pliku
   AssignFile(F,Info^.Path);Rewrite(F);
   try
    Writeln(F,'Hello world!');
    Writeln(F,'To jest test drukowania tekstowego...');
   finally
    CloseFile(F);
   end;

   // Wrzucamy plik do kolejki drukowania, potem Windows go skasuje
   ScheduleJob(H,Info^.JobId);
   finally
    // Zwalniamy pamięć...
    FreeMem(Info,Size);
   end;
finally
  // ...i drukarkę
  ClosePrinter(H);
end;
end;

Można też spróbować innego sposobu. Użyć CreateFile aby otrzymać uchwyt do LPT1:

Kod:
LPTHandle:=CreateFile('LPT1',GENERIC_WRITE,0,PSecurityAttributes(nil),
                      OPEN_EXISTING, FILE_FLAG_OVERLAPPED,0);

Następnie użyć WriteFile aby wysłać kolejne znaki lub:

Kod:
while not TransmitCommChar(LPTHandle,CharToSend) do Application.ProcessMessages;

Powyższy kod wysyła kolejne znaki na port równoległy za każdym razem czekając na obsłużenie znaku przez drukarkę.

Inna alternatywa:

Cytat:
Kod:
function DirectPrint( const PrinterName : string;Data : PByte;
                      DataLen : Cardinal; out Error : string) : Boolean;
var
  hPrinter : THandle;
  DocInfo : TDocInfo1;
  Job, DataWritten : Cardinal;
begin
  Error := 'Unknown Error';
  Result := False;
  if not OpenPrinter(PChar(PrinterName), hPrinter, nil) then begin
    Error := SysErrorMessage(GetLastError);
    Exit;
  end;
  DocInfo.pDocName := 'My Document name';
  DocInfo.pOutputFile := nil;
  DocInfo.pDatatype := 'RAW';

  Job := StartDocPrinter(hPrinter, 1, @DocInfo);
  if Job=0 then begin
    Error := SysErrorMessage(GetLastError);
    ClosePrinter(hPrinter);
    Exit;
  end;

  if not StartPagePrinter( hPrinter ) then begin
    Error := SysErrorMessage(GetLastError);
    EndDocPrinter(hPrinter);
    ClosePrinter(hPrinter);
    Exit;
  end;

  if not WritePrinter(hPrinter, Data, DataLen, DataWritten) then begin
    Error := SysErrorMessage(GetLastError);
    EndPagePrinter(hPrinter);
    EndDocPrinter(hPrinter);
    ClosePrinter(hPrinter);
    Exit;
  end;

  if not EndPagePrinter(hPrinter) then begin
    Error := SysErrorMessage(GetLastError);
    EndDocPrinter(hPrinter);
    ClosePrinter(hPrinter);
    Exit;
  end;

  if not EndDocPrinter(hPrinter) then begin
    Error := SysErrorMessage(GetLastError);
    EndDocPrinter(hPrinter);
    ClosePrinter(hPrinter);
    Exit;
  end;

  ClosePrinter(hPrinter);

  Result := DataWritten=DataLen;
end;

procedure PrintString(s : string);
var
  h : Cardinal;
  sPrinterName,sDriver,sPort:array[0..255]of Char; // sDriver i sPort nie będą
                                                                 // wykorzystane
  Err : string;
begin
  Printer.GetPrinter(sPrinterName,sDriver,sPort,h);
  if not DirectPrint(sPrinterName,PByte(PChar(s)),length(s),Err) then
    ShowMessage(Err);
end;

Tam gdzie są buźki to tj. Zawstydzony - : I (bez spacji) oraz Język - : P (również bez spacji)

Źródło Delphi FAQ

google nie gryzie.
"Mów to co myślisz i myśl to co mówisz"
Już niedługo rewolucja, powstaje it-team.pl
Chcesz się przyłączyć? Pokaż na co Ciebie staćOczko
 System operacyjny: windows_xp_2003 Przeglądarka: opera
#16
RE: Problem Delphi
Duże partie kodu proszę dodawać jako załączniki do wypowiedzi.
 System operacyjny: windows_2000 Przeglądarka: opera
#17
RE: Problem Delphi
Dzięx
Mój program działał dobrze przez jakieś 2 dni a teraz niechce się włączyć
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
Programy: Polecane / Nowe / Inne




Podobne wątki (Problem Delphi)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  [Pascal/Delphi] Sortowanie quicksort oraz scalanie. Chudy2000 3 10881 01.05.2016, 22:34
Ostatni post: Szachista
  [Delphi] 4 krótkie zadania z całkowitych podstaw - prośba o pomoc. thinkpad 2 2856 07.01.2014, 16:43
Ostatni post: Szachista
  Delphi odliczanie (timer) szymon1944 6 6790 11.11.2013, 15:58
Ostatni post: szymon1944

Skocz do: