SENDER an andere Form übermitteln
-
- Beiträge: 6194
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: SENDER an andere Form übermitteln
Mir war ein bisschen langweilig und habe an einer Eingabeeinheit rumgebastelt. Die Ganze Einheit wird dynamisch aufgebaut, somit ist sie recht flexibel, wen man sie um mehr Stellen erweitern will.
Was noch fehlt sind die Bitmaps in den Buttons, auch ist der Text noch nicht richtig formatiert.
http://mathias1000.bplaced.net/test/EingabeEinheit.tar.gz
Was noch fehlt sind die Bitmaps in den Buttons, auch ist der Text noch nicht richtig formatiert.
http://mathias1000.bplaced.net/test/EingabeEinheit.tar.gz
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 576
- Registriert: Sa 22. Okt 2016, 23:12
- OS, Lazarus, FPC: W10, L 2.2.6
- CPU-Target: 32+64bit
- Wohnort: Dresden
Re: SENDER an andere Form übermitteln
Hi Mathias,
Bezug:
ich würde statt:
das so machen:
das würde mir dann besser gefallen.
Bezug:
Mathias hat geschrieben:http://mathias1000.bplaced.net/test/EingabeEinheit.tar.gz
ich würde statt:
Code: Alles auswählen
if EingabeForm.ShowModal = mrOk then begin
Str(EingabeForm.Wert:4, s);
L.Caption := s;
end;
das so machen:
Code: Alles auswählen
if EingabeForm.ShowModal = mrOk then begin
L.Caption := Format('%.4d',[EingabeForm.Wert]);
end;
das würde mir dann besser gefallen.
LG Maik
Windows 10,
- Lazarus 2.2.6 (stable) + fpc 3.2.2 (stable)
- Lazarus 2.2.7 (fixes) + fpc 3.3.1 (main/trunk)
Windows 10,
- Lazarus 2.2.6 (stable) + fpc 3.2.2 (stable)
- Lazarus 2.2.7 (fixes) + fpc 3.3.1 (main/trunk)
-
- Beiträge: 6194
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: SENDER an andere Form übermitteln
Eine neue Version.
http://mathias1000.bplaced.net/test/EingabeEinheit.tar.gz
Jetzt kann man bei CreateNew die Anzahl Ziffern festlegen.
Im EingabeForm wird jetzt alles mit String und Char abgearbeitet. Somit hat man den Vorteil das die komplizierte Zerlegung der Integer entfällt.
Noch ein Vorteil, mit einer kleine Änderung ist es auch möglich Buchstaben einzugeben.
Wen der Nutzer die Ausgabe als Integer bracht, dann kann er es immer noch selbst umwandeln.
http://mathias1000.bplaced.net/test/EingabeEinheit.tar.gz
Jetzt kann man bei CreateNew die Anzahl Ziffern festlegen.
Im EingabeForm wird jetzt alles mit String und Char abgearbeitet. Somit hat man den Vorteil das die komplizierte Zerlegung der Integer entfällt.
Noch ein Vorteil, mit einer kleine Änderung ist es auch möglich Buchstaben einzugeben.
Wen der Nutzer die Ausgabe als Integer bracht, dann kann er es immer noch selbst umwandeln.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
Re: SENDER an andere Form übermitteln
Du solltest die Ziffern noch sauber zentrieren, und auch ihren Hintergrund ausschalten (der weiße Text-Hintergrund auf dem grauen Panel-Hintergrund sieht zumindest unter Windows "falsch" aus):
Jetzt könntest du zur Übung noch eine Komponente daraus machen...
Code: Alles auswählen
procedure TEingabeEinheit.EinageEinheitPaint(Sender: TObject);
var
s: TSize;
begin
Canvas.Brush.Style := bsClear;
Canvas.Font.Height := 76;
s := Canvas.TextExtent(Wert);
Canvas.TextOut((Width - s.cx) div 2, (Height - s.cy) div 2, Wert);
end;
Jetzt könntest du zur Übung noch eine Komponente daraus machen...
-
- Beiträge: 6194
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: SENDER an andere Form übermitteln
Du bist ein richtiger Hellseher, genau dies habe ich gesucht.Du solltest die Ziffern noch sauber zentrieren, und auch ihren Hintergrund ausschalten (der weiße Text-Hintergrund auf dem grauen Panel-Hintergrund sieht zumindest unter Windows "falsch" aus
Mit Font.Height, hat die Zentrierung nicht richtig hin gehauen.
Ich sehe schon, was die LCL anbelangt kann ich noch viel lernen.
Jetzt könntest du zur Übung noch eine Komponente daraus machen...
Das wäre mal noch was. Man könnte den Dialog als Komponente machen.
http://mathias1000.bplaced.net/test/EingabeEinheit.tar.gz
Jetzt sieht es einiges besser aus.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 576
- Registriert: Sa 22. Okt 2016, 23:12
- OS, Lazarus, FPC: W10, L 2.2.6
- CPU-Target: 32+64bit
- Wohnort: Dresden
Re: SENDER an andere Form übermitteln
Hi Mathias,
ich hab noch ein MouseWheelUp + Down hinzugefügt.
Weis einer von euch wie das mit einem Touch Display aussieht? Ich meine wird da auch das onMouse... Event genommen?
Natürlich nicht wenn man auf einen Button drückt, das ist mir schon klar,
http://www.dl0ftl.de/dm4ywl/EingabeEinheit_MouseWheel.zip
LG Maik
ich hab noch ein MouseWheelUp + Down hinzugefügt.
Weis einer von euch wie das mit einem Touch Display aussieht? Ich meine wird da auch das onMouse... Event genommen?
Natürlich nicht wenn man auf einen Button drückt, das ist mir schon klar,
http://www.dl0ftl.de/dm4ywl/EingabeEinheit_MouseWheel.zip
LG Maik
LG Maik
Windows 10,
- Lazarus 2.2.6 (stable) + fpc 3.2.2 (stable)
- Lazarus 2.2.7 (fixes) + fpc 3.3.1 (main/trunk)
Windows 10,
- Lazarus 2.2.6 (stable) + fpc 3.2.2 (stable)
- Lazarus 2.2.7 (fixes) + fpc 3.3.1 (main/trunk)
Re: SENDER an andere Form übermitteln
Mathias hat geschrieben:Jetzt könntest du zur Übung noch eine Komponente daraus machen...
Das wäre mal noch was. Man könnte den Dialog als Komponente machen.
Ich hätte eher an die Gruppe von TEingabeEinheiten gedacht, ohne die Standard-Dialog-Buttons. Damit wäre der Einsatzbereich größer. Auch müsste der Font, v.a. Font.Size, des Zifferndisplays einstellbar sein (Font des Panel verwenden).
-
- Beiträge: 6194
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: SENDER an andere Form übermitteln
ich hab noch ein MouseWheelUp + Down hinzugefügt.
Ich habe das bei mir jetzt auch eingebaut.
Nur habe ich das Up und Down ausgelagert, die Auswertung ist die gleiche wie bei den Buttons.
Code: Alles auswählen
procedure TEingabeEinheit.Up;
begin
Inc(FWert);
if FWert > '9' then begin
FWert := '0';
end;
end;
procedure TEingabeEinheit.Down;
begin
Dec(FWert);
if FWert < '0' then begin
FWert := '9';
end;
end;
procedure TEingabeEinheit.BtnClick(Sender: TObject);
begin
if Sender = BtnUp then begin
Up;
end;
if Sender = BtnDown then begin
Down;
end;
Invalidate;
end;
procedure TEingabeEinheit.EingabeEinheitMouseWheel(Sender: TObject;
Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
begin
if WheelDelta < 0 then begin
Up;
end;
if WheelDelta > 0 then begin
Down;
end;
Invalidate;
end;
http://mathias1000.bplaced.net/test/EingabeEinheit.tar.gz
Ich hätte eher an die Gruppe von TEingabeEinheiten gedacht, ohne die Standard-Dialog-Buttons. Damit wäre der Einsatzbereich größer. Auch müsste der Font, v.a. Font.Size, des Zifferndisplays einstellbar sein (Font des Panel verwenden).
Meinst du anstelle des Forms, ein Panel nehmen ?
Weis einer von euch wie das mit einem Touch Display aussieht? Ich meine wird da auch das onMouse... Event genommen?
Ich denke mal, das dies nicht geht. Oder hast du mal auf einem Tablett/Handy ein Whell-Ereigniss gesehen.
Ausser das Wischen wird als Whell Ereigniss genommen.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
Re: SENDER an andere Form übermitteln
Mathias hat geschrieben:Ich hätte eher an die Gruppe von TEingabeEinheiten gedacht, ohne die Standard-Dialog-Buttons. Damit wäre der Einsatzbereich größer. Auch müsste der Font, v.a. Font.Size, des Zifferndisplays einstellbar sein (Font des Panel verwenden).
Meinst du anstelle des Forms, ein Panel nehmen ?
Ja, oder noch besser, ein TWinControl o.ä,, denn in ein Panel kann man immer noch andere Controls ablegen, und ich kann mir nicht vorstellen, dass das sinnvoll ist. Und ein Panel kann viel mehr als man hier benötigt. Wieso die Komponente mit unnötigem Code aufblähen?
Etwas weniger anspruchsvoll, aber auch sehr allgemein anwendbar, wäre es auch, statt TForm ein TFrame zu nehmen.
-
- Beiträge: 6194
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: SENDER an andere Form übermitteln
Ja, oder noch besser, ein TWinControl o.ä,,
Ich habe es jetzt in TWinControl ausgelagert.
http://mathias1000.bplaced.net/test/EingabeEinheit.neu.tar.gz
Hast du dir dies etwa so vorgestellt ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 6194
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: SENDER an andere Form übermitteln
Ein OnChange-Ereignis müsste noch rein.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 6194
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: SENDER an andere Form übermitteln
So nun habe ich ein OnChange-Ereignis eingebaut.
http://mathias1000.bplaced.net/test/Ein ... neu.tar.gz
In dem TitelBalken des Eingabeforms zeigt es zur Kontrolle das Ereignis an.
http://mathias1000.bplaced.net/test/Ein ... neu.tar.gz
In dem TitelBalken des Eingabeforms zeigt es zur Kontrolle das Ereignis an.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot