Lazarus (Delphi) FreePascal
Codeschnipsel
http://lazarus-ccr.sourceforge.net/docs/lcl/index.html
Taste Enter Aktion auslösen | Listbox | Fehlermeldungen | Arrays | Datei lesen, schreiben |
Text aufteilen (Split) | TStringGrid | Rechnen mit Datum | Runden | Form drucken |
Drucken Beispiel |
https://www.tutorialspoint.com/jquery_programming_examples/
https://www.tutorialspoint.com/tpcg.php?p=d3IQYz
https://www.delphipraxis.net/133104-printer-canvas-fontgroesse.html
https://www.entwickler-ecke.de/topic_Drucken+mit+TPrinter++Tutorial+I_71392,0.html
http://wiki.freepascal.org/Using_the_printer/de
http://forum.lazarus.freepascal.org/index.php?topic=35198.0
http://forum.lazarus.freepascal.org/index.php/topic,21687.0.html?PHPSESSID=rvghpdme4suvkcl5tn47hr30e5
http://www.lazarusforum.de/viewforum.php?f=10
http://www.lazarusforum.de/viewforum.php?f=21
http://wiki.lazarus.freepascal.org/Lazarus_Faq
http://www.schoolfreeware.com/Free_Pascal_Tutorials.html
http://www.delphipraxis.net/26733-xor-verschluesselung.html
http://www.freidling.info/Download/info11/Delphi-opgrundlagen.pdf
http://www.bergt.de/workshop/delphi/inhalt.htm
http://wiki.freepascal.org/Form_Tutorial/de
Erste Schritte:
http://www.bergt.de/workshop/delphi/inhalt.htm
http://wiki.freepascal.org/Lazarus_Tutorial/de
http://wiki.freepascal.org/Form_Tutorial/de
Application.terminate;
Dialoge / Dialoge übersetzen -> zurück
http://wiki.freepascal.org/Dialog_Examples/de
procedure ShowMessage (const Msg: string); function MessageBox (Text, Caption : PChar; Flags: Word): Integer; function MessageDlg (const Msg: string; AType: TMsgDlgType; AButtons: TMsgDlgButtons; HelpCtx: LongInt): Word; function InputBox (const ACaption, APrompt, ADefault: string); string; function InputQuery (const ACaption, APrompt: string; var Value: string): Boolean; function PasswordBox(const ACaption, APrompt : String) : String;
Beispiel:
uses Translations; procedure TForm1.FormCreate(Sender: TObject); var PODirectory: String; begin PODirectory:='/usr/lib/lazarus/lcl/languages/'; // Schrägstrich nicht vergessen! TranslateUnitResourceStrings('LCLStrConsts',PODirectory+'lclstrconsts.%s.po','de',''); MessageDlg('Title','Text',mtInformation,[mbOk,mbCancel,mbYes],0); end;
Hinweis: man muss die po Dateien mit der Anwendung mitliefern bzw. als Ressource einbinden!
kleine Binärdateien:
http://www.lazarusforum.de//viewtopic.php?f=51&t=1878
Menü: Projekt -> Projekteinstellungen -> Compilereinstellungen -> Debuggen -> Debugger-Informationen .. (Haken entfernen)
Datei lesen und schreiben:
http://wikis.zum.de/zum/Lazarus-Buch/Dateien
C
http://www.tutorials.at/c/compiler-installieren.html
Mit Entertaste Aktion auslösen -> zurück
Entertaste Aktion auslösen
begin If Key = 13 then begin //Aktion Key := 0; end; end;
Wichtig ist es anschließend den Key auf #0 zu setzen. So wird verhinder, dass noch eine weitere Verarbeitung im Edit stattfindet.
Wenn bei Drücken der Enter-Taste ein Button geklickt werden soll, kann auch die Eigenschaft "Default" des Buttons auf "true" gestzt werden. Damit wird automatisch der Button geklickt, wenn Enter gedrückt wird.
Dasselbe gilt es auch für die ESC-Taste, in diesem Fall muss die Eigenschaft "Cancel" auf "true" gesetzt werden.
Listbox -> zurück
http://wiki.lazarus.freepascal.org/TListBox/de
Listbox leeren : listbox.items.clear
Listbox Eintrag zufügen : listbox.items.add
Listbox Eintrag löschen
procedure TForm1.btnDelClick(Sender: TObject); begin if ListBox1.ItemIndex > -1 then //Nur löschen, wenn ein String in der Listbox selektiert ist ListBox1.Items.Delete(ListBox1.ItemIndex); end;
Fehlermeldungen -> zurück
Errorcode 5 trat auf weildie zu kompilierende Anwendung lief. Erst die alte Anwendung schließen dann Start
Arrays -> zurück
https://de.wikibooks.org/wiki/Programmierkurs:_Delphi:_Pascal:_Arrays
Dateien lesen schreiben -> zurück
mit TOpenDialog
var filename : string; if OpenDialog1.Execute then begin filename := OpenDialog1.Filename; ShowMessage(filename); end;
Ohne Dialog (Quelle)
PROGRAM Dateien_lesen; USES Crt; VAR Datei: Text; (* Dateizeiger *) Gelesen, Pfad: String; BEGIN Datei := 'beispieldatei.txt'; Pfad := 'C:\tmp\'; (* '' aus dem aktuellen Verzeichnis *) Assign (Datei, Pfad); (* Pfad festlegen *) Reset (Datei); (* Datei zum Lesen oeffnen *) REPEAT ReadLn (Datei, Gelesen); (* eine Zeile lesen *) MsgBox(Gelesen); (* eine Zeile ausgeben *) UNTIL EOF (Datei); (* Abbruch, wenn das Zeilenende erreicht ist; also wenn EOF TRUE liefert *) Close (Datei); (* Datei schliessen *) END.
Textaufteilen mit Split -> zurück
\\http://www.lazarusforum.de/viewtopic.php?f=11&t=9746
procedure TForm1.Button1Click(Sender: TObject); const s = 'A12;BX;XV;VG'; var sr: TStringArray; i: integer; begin sr := s.Split(';'); for i := 0 to Length(sr) - 1 do begin Memo1.Lines.Add(sr[i]); end; end
Textaufteilen mit SplitTSringGrid -> zurück
https://www.delphipraxis.net/102733-stringgrid-fuellen.html
procedure FillGrid(sg: TStringGrid; nCols, nRows: Integer);
var iCol, iRow: Integer; begin with sg do begin RowCount := nRows; ColCount := nCols; FixedCols := 0; FixedRows := 0; for iRow := 0 to Pred(nRows) do for iCol := 0 to Pred(nCols) do Cells[iCol, iRow] := IntToStr(Succ(iRow * nCols + iCol)); end; end;
Rechnen mit Datumswerten, -> zurück
https://www.freepascal.org/docs-html/rtl/dateutils/index-5.html
Runden -> zurück
Die normale Round-Funktion von Delphi oder Lazarus kann dazu benutzt werden, eine Kommazahl (float oder extended) auf einen Integer-Wert zu runden:
Die von Delphianer publizierte Funktion erweitert das runden
function RoundEx(const AInput: extended; APlaces: integer): extended; var k: extended; begin if APlaces = 0 then begin result := round(AInput); end else begin if APlaces > 0 then begin k := power(10, APlaces); result := round(AInput * k) / k; end else begin k := power(10, (APlaces*-1)); result := round(AInput / k) * k; end; end; end;
Der erste Parameter ist unsere Zahl, die wir runden möchten. Der zweite Parameter gibt die Anzahl von Nachkommastellen beziehungsweise Ziffern an, auf die wir runden möchten.
Wenn wir als zweiten Parameter 0 übergeben, erhalten wir das normale Ergebnis der round-Methode. Nehmen wir eine positive Zahl, schneidet unser Funktion entsprechend viele Nachkommastellen ab. Benutzen wir eine negative Zahl, können wir auf eine Zehnerstelle, eine Tausenderstelle oder jede andere höhere Dezimalstelle runden.
Form drucken -> zurück
procedure TForm1.PrintForm; var
bmp: TBitmap; widthP, heightP: integer;
begin
bmp:=TBitmap.Create; try Printer.BeginDoc; widthP:=trunc(Printer.XDPI*Width / Screen.PixelsPerInch); heightP:=trunc(printer.YDPI*Height / Screen.PixelsPerInch); bmp.SetSize(Width, Height); PaintTo(bmp.Canvas, 0, 0); Printer.Canvas.StretchDraw(Rect(0, 0, widthP, heightP), bmp); Printer.EndDoc; finally bmp.Free; end;
end;
Drucken Beispiel -> zurück
procedure TForm1.Button1Click(Sender: TObject); const LEFTMARGIN = 100; HEADLINE = 'I Printed My Very First Text On '; var YPos, LineHeight, VerticalMargin: Integer; SuccessString: String; begin with Printer do try BeginDoc; Canvas.Font.Name := 'Courier New'; Canvas.Font.Size := 10; Canvas.Font.Color := clBlack; LineHeight := Round(1.2 * Abs(Canvas.TextHeight('I'))); VerticalMargin := 4 * LineHeight; // There we go YPos := VerticalMargin; SuccessString := HEADLINE + DateTimeToStr(Now); Canvas.TextOut(LEFTMARGIN, YPos, SuccessString); finally EndDoc; end; end;
https://www.delphipraxis.net/2345-zaehlen-von-eintraegen-sqlquery.html