Einzelne Zellen in einem StringGrid einfärben in Lazarus / Delphi

Ich habe mich durch einige Foren gelesen, aber immer nur Schnipsel gefunden,
die zwar auch funktionierten, jedoch meistens nicht, wie ich es wollte.

Man kann ein beliebiges Formular anlegen. Z.B. Form1.
Dann in dieser Form ein StringGrid platzieren.
Ich habe dem StringGrid den Namen sg gegeben, da ich nicht gerne soviel schreibe.
Wenn man dann das StringGrid markiert, sieht man im Objektinspektor einen Reiter
„Ereignisse“. In diesem Reiter gibt es das Ereignis „OnDrawCell“. Wenn man dieses
Ereignis markiert und dann auf den Button daneben klickt erhält man dieses Prozedurgerüst.
Dann kann man mit with sagen, dass man nicht immer sg.Canvas schreiben möchte, sondern immer nur die Prozedure und Funktionen hinter sg.Canvas nutzen möchte (z.B.: Brush.Color statt sg.Canvas.Brush.Color).

Nun ist es wichtig zu wissen, dass die Funktion DrawCell automatisch für jede Zelle aufgerufen wird. D.h. für ein Grid mit 3 Spalten und 4 Reihen braucht man keine Schleifen zu bauen, da jede einzelne Zelle die Funktion aufruft. Es ist nur wichtig zu entscheiden, was mit der Zelle geschehen soll oder nicht.

Im Beispiel wird die Zelle Spalte 2 Reihe 1 gelb gefärbt.
Dazu werden ACol und ARow abgefragt. Wie oben gesagt, wird die Funktion von jeder Zelle aufgerufen.
Also wäre es auch möglich einfach nur die IF-Bedingung mit einer Reihe (ARow) zu machen um z.B. mit wenig Aufwand jede 2. Zeile andersfarbig zu gestalten.
Brush.Color gibt die gewünschte Hintergrundfarbe der Zelle an. Dafür wird hier die Konstante clyellow verwendet. Analog dazu gibt es auch clred usw.
Mit FillRect(aRect) wird die Zelle ausgemalt

.
!!! Achtung : Die Farbe übermalt auch den Text (Inhalt der Zelle). !!!

Bei diesem Punkt endeten meist die Tutorial, die ich gefunden habe.
Man hat nun eine toll ausgemalte Zelle, kann nur nichts mehr lesen.
Das ist irgendwie doof.
Mit sg.Cells[ACol, ARow] liest man jetzt den Inhalt der Zelle, die man eben farbig gemacht hat (der noch vorhanden ist, man kann ihn nur nicht mehr sehen) und schreibt (malt) ihn mit der TextOut Funktion wieder an seine Stelle.

Also, hier meine Lösung :

procedure Tfrmverm.sgDrawCell(Sender: TObject; aCol, aRow: Integer;
  aRect: TRect; aState: TGridDrawState);
begin
  with sg.Canvas do begin
       if (ACol=2) and (ARow=1) then begin
       Brush.Color:= clyellow;
       FillRect(aRect);
       TextOut(aRect.Left+2, aRect.Top+2, sg.Cells[ACol, ARow]);
       end;
  end;
end;   

 

Der Puffin Browser für Android und Apple

Eigentlich propagiere ich immer kostenlose Software, aber der Puffin Browser ist wirklich jeden Cent wert.

puffin

http://www.puffinbrowser.com

Webbrowser gibt es viele. Puffin arbeitet jedoch völlig anders als herkömmliche Browser.
Der größte Vorteil ist sicher, daß Puffin auf jedem Gerät Flash abspielen kann.

Der Browser verbindet sich immer mit einem Puffin-Server an der Westküste der USA.
Die Anfragen vom Browser werden über diesen Server gerendert.
D.h. der Server schickt die Anrfrage an den Server (z.B. www.youtube.de), der Server verbindet sich mit voutube und schickt das Ergebnis der Anfrage zurück.
Das hört sich erstmal an, als ob das Zenario länger dauert, als ob man direkt auf die Webseite zugreift.
Das stimmt jedoch nicht.
Ich habe mit Chrome, Dolphin und dem mitgelieferten Browser von Android 4.0.3 ICS getestet. Puffin schläg sie in Sachen Geschwindigkeit um Längen.

Es gibt bei dieser Zugriffsart des Browsers jedoch drei wichtige Nebeneffekte.
Die aufgerufende Seite nimmt an, der Standort des Gerätes sei an der Küste Californiens.

Daher :

– Beim Anmelden in youtube, Facebook, Google und twitter kann man aufgefordert werden eine Sicherheitsabfrage zu beantworten, wenn man vorher mit einem anderen Browser oder einem anderen Computer angemeldet war. Das kommt daher, dass sich diese Dienste nicht erklären können, wie man in ein paar Minuten von Deutschland nach Californien kommt.
– Bei youtube kann es passieren, daß das Bild „Leider kann das Video wegen Nutzungsrechten der Gema …“ nicht angezeigt, sondern das Video abgespielt wird. Weil man ja lt. Gerät in den USA ist greifen dort leider die Beschränkungen der Gema nicht.
– Wenn man über Puffin Videos ansieht übernimmt der Puffin-Server das anzeigen von Flash und nicht das Gerät. Daher wird der Prozessor nicht belastet und der Akku hält deutlich länger, da der Browser nur die Seite anzeigt.

Puffin gibt in seiner Beschreibung an, daß nur youtube-Videos laufen. Das ist nicht so.
Ich habe viel Seiten ausprobiert und jedes Video lief.
Sogar Webseiten wie SchönerFernsehen (Deutsches Fernsehen live) laufen problemlos.

Fazit :

Sehr schnell, spielt Flash überall und spart Strom.
Für mich sehr gut.

Odys Motion mit externer Tastatur-Tasche Touchlet von Pearl

Das folgende sollte auch mit jedem anderen Tablet mit ICS 4.0.3 funtionieren.

Da ich das Tippen von längeren Texten auf dem Tochscreen etwas umständlich/ungewohnt empfand, musste jetzt eine externe Tastatur her.

Nach langen Suchen fand ich die „TOUCHLET 2in1-Schutztasche mit Tastatur für Tablet-PC X2,X3,X4,X5 & X7“ beim Pearl-Versand. Der Adapter von USB auf Micro-USB liegt bei.Das ist bei Pearl nicht erwähnt.
Ich habe ein Rezession gelesen, in der behauptet wird, das Tablet liege im zusammengeklappten Zustand auf den Tasten auf und könnte so zerkratzen. Das kann ich nicht bestätigen. Die Halter der Tasche für das Tablet überragen das Tablet und liegen auf. Der Bilschirm liegt frei. Zudem lässt sich die Tablethalterung noch anders verwenden. Der mitgelieferte USD-Mini-Adapter passt im zugekappten Zustand nicht mit in die Tasche. Die Tablethalter sind jedoch flexibel. Dadurch kann man den USB-Adapter bequem zwischen rechte Halterung und Tablet klemmen und hat alles beisammen.

http://www.pearl.de/a-PX8627-1541.shtml
(Ich mag schon den Link. Das 1541 war mal ein Diskettenkaufwerk des C64 )

Die meisten Tastaturen verfügen über eine „QWERTY“ Belegung, diese jedoch hat eine „QWERTZ“ Belegung mit deutschen Umlauten.
Der Preis von 29,00 Euro ist OK und die Tasche ist so groß, dass sie noch in die Innentasche meiner Jacke passt (Ja, die Innentasche ist groß).

Die Tastatur am Tablet zu benutzen ohne eine Zusatz-App ist meines Erachtens unmöglich. Sie wird erkannt, jedoch in einer amerikanischen Belegung. D.h. Z ist Y und die Sonderzeichen wie Klammern, @ oder einfach auch nur Anführungszeichen sind quer über die Tastatur verteilt, nur nicht dort auf den Tasten, auf denen sie abgebildet sind.

Ich finde die App „External Keyboard Helper Pro“ sehr empfehlenswert. Man kann sie im PlayStore für $2.45 kaufen oder auch als APK downloaden (Google benutzen).

Die App findet sich nach der Installation unter Sprache und Eingabe in den Androideinstellungen wieder. Man muß darauf achten, dass sie als Standard-Tastatur ausgewählt ist, wenn man sie benutzen will.

Die App ist fast komplett in Deutsch übersetzt.
Zuerst wählt man ein Keyboard-Layout. Deutsch bzw. Germany ist vorhanden.
Das war schonmal die halbe Miete.
Nun geht es darum das Layaut an die Tastatur anzupassen. Dazu wählt man die erweiterten Einstellungen der App.
Meüpunkt 1 ist Tastenzuordnungen anpassen. Hier kann man die Tasten nach belieben zuordnen.
In den schon angelegten Zuordnungen musste ich die Tasten für die Umlaute anpassen. Dafür drückt man einfach auf den Eintrag un trägt unter „Normal“ das gewünschte Zeichen ein. Der Scancode wird oben angezeigt und ändert sich je nach gedrückten Zeichen automatisch. Das macht man mit allen zu ändernen Zeichen.
Danach sollte man im Übersichtsmenü der geänderten Tasten das Eigenschaftsmenü auswählen um dort die Änderungen unter „Datensicherung“ in einer Datei zu speichern.

Fazit :

Die Tastatur funktioniert prima zusammen mit der App. Sogar die Steuerung des Tablets klappt fast komplett ohne den Touchscreen zu benutzen (in den 80’ern hat man immer gesagt : Bloß nicht mit den Fingern auf dem Bildschirm rumtatschen!).

Noch ein Tip :
Es gibt Apps, die sich weigern im horizontalen Modus (Landscape Mode) zu arbeiten.
Diese kann man mit der kostenlosen App „Ultimate Rotation Control“ dazu bewegen.