Hilfe bei Kylix3 Anwendung Hilfe !!

Ingo1

Grünschnabel
Hallo

Ich bin neu hier und hoffe das Ihre mir weiter helfen könnt.
Ich habe unter Linux(Knoppix) mit Kylix eine kleine Anwendung geschrieben.Da ich mich
mit dem Progamm aber nicht auskenne sind ein paar Fragen aufgetaucht, die Ihr mir hoffentlich beantworten könnt. Ich habe Sie der Priorität nach geordnet.

1. Wie starte ich eine Kylix Anwendung auf einem Rechner wo kein Kylix installiert ist?
2. Wie ordne ich Buttons die ich in Kylix gesetzt habe und mit der Maus betätigen kann,
einen Buchstaben zur Betätigung zu (nicht in Caption mit &XY will kein ALT drücken
müssen)
3. Wie kann ich Teile einer Bitmap die ich mit Strech in einem Image Anzeigen lasse in
ein anderes Image rein kopieren? So das ich z.B. nur die 1/2 oder 1/4 des Bildes im
neuen Image angezeigt bekomme? Hab in der Kylix Hilfe irgendwas mit CopyRect
gefunden aber wie genau weiß ich nicht.

Auch wenn Ihr mir nur eine Frage beantworten könnt wäre ich euch schon sehr Dankbar
hab nämlich schon über all geguckt und komm nicht weiter.

MfG
Ingo1
 
zu 1. Kylix erzeugt normalerweise ausführbare Dateien. Evtl. mußt Du jedoch noch Laufzeitpackages mitgeben. Lies Dir mal die Datei DEPLOY.TXT von Kylix durch.

zu 2. Dazu mußt Du KeyPreview des Formulares auf TRUE setzen und im OnKeyPress oder OnKeyDown -Ereignis des Formulares den gedrückten Buchstaben ermitteln
Code:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
   case Key of
      a,A : Button1Click(Sender); 
      b,B : Button2Click(Sender); 
      c,C : Button3Click(Sender); 
      d,D : Button4Click(Sender);   
    end;
end;
Damit obiger Code funktioniert muß für jeden Button natürlich ein OnClick Ereignis definiert sein.

zu 3. Schau mal hier nach http://www.swissdelphicenter.ch/de/grafik.php. Ist zwar für Delphi aber Kylix ist ja quasi Delphi.

Kleiner Tip: Ich würde lieber mit Lazerus an Stelle von Kylix arbeiten, da die Entwicklung von Kylix eingestellt ist. Lazerus ist eine frei verfügbare IDE für Objektpascal. Lazerus ist stark an Delphi angelehnt und für Linux als auch für Windows verfügbar. Für Lazerus gibt es mehr Komponenten als für Kylix.
 
Hallo Twinsetter

Danke für die Hilfe bei meinen Problemen.

zu 1. Kylix erzeugt normalerweise ausführbare Dateien. Evtl. mußt Du jedoch noch Laufzeitpackages mitgeben. Lies Dir mal die Datei DEPLOY.TXT von Kylix durch.

Da hast du recht Kylix erzeugt eine ausführbare Datei aber selbst auf dem Rechner wo Kylix installiert ist muß ich in die profile Datei noch folgenden link eintragen "export LD_LIBRARY_PATH= /user/local/kylix3/bin:$LD_LIBRARY_PATH". Hab mir dann gedacht na gut dann kopier ich halt den gesamten bin Ordner noch mit auf das System wo die Anwendung laufen soll, aber kein Kylix installiert ist. Doch das hat nichts gebracht konnte die ausführbare Datei immer noch nicht aufrufen. Und aus der DEPLOY.txt Datei bin ich nicht wirklich schlau geworden da steht auch was von Bibliotheken die man mit liefern muß aber welche brauch ich und wie link ich die?

zu 2. Dazu mußt Du KeyPreview...
Procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
case Key of
a,A : Button1Click(Sender);

end;
end;
... Ereignis definiert sein.

Super danke das hat geklappt jetzt nur noch ne Kleinigkeit wie kann ich den Pfeiltasten (hoch runter rechts links) was zu ordnen? Im moment werden Sie ja automatisch (von Kylix vorgegeben) zum verschieben des Focus verwendet. Muß ich diese Funktion erst ausschalten oder wie kann ich denen sonst nen Button1Click(Sender) zuordnen?

zu3. muß ich ncoh mal gucken bis jetzt hab ich da noch nichts nützliches gefunden.


MfG
Ingo1
 
Also mit den Libaries muß ich selbst noch mal nachschauen, was man da alles mitgeben muß und wie's genau geht. Muß da noch mal in einem Buch nachlesen, da komme ich aber erst am Wochenende wieder dazu.

Mit den Pfeiltasten ist auch ganz einfach. Hierfür kann man das Ereignis onKeyDown benutzen da dieses auf alle Tasten, also auch auf Sondertasten regiert.
Erzeuge einfach mal ein neues Projekt. Setze bei dem Formular die Eigenschaft KeyPreview auf True. Auf das Formular plazierst Du ein Label und dann schreibst Du in die onKeyDown Procedure folgenden Code:
Code:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  Label1.Caption:=inttostr(Key);
end;
Jetzt kannst Du die Tasten drücken die Du in Deinem Programm benutzen möchtest. Das Label zeigt dabei den Code der gedrückten Taste an. Wenn Du z.B. a drückst wird 65 angezeigt, Cursor nach oben entspricht 38, Return 13 usw.
Die zahlen kannst Du dann wieder mit case auswerten, also:
Code:
case Key of
   38 : begin
          
          end;
    65 : begin

           end;
end;

Denk mal über Lazarus nach. Da muß Du nichts mitgeben und das wird auch weiter entwickelt.
 
Hallo

Danke für den Tip habs geschafft alle Tasten die ich brauche zu verwenden Problem war
das bei den Button Objekten die Eigenschaft TABSTOP auf false gesetzt werden muß
und ich keinen Button mit der Maus anklicken darf da sonst wieder ein Focus gesetzt
wird und die Pfeiltasten dadurch belegt sind. Macht aber nichts in meiner Orginal
Anwendung hab ich keine Maus.

Zu Lazarus ich werd es mir heute mal angucken da es ja ähnlich aufgebaut ist wie Kylix und
auch mit Delphi geschrieben wird. Weil eigentlich will ich in drei Wochen mit dem Projekt
fertig sein und Kylix ist schon die zweite Entwicklungsumgebung die ich verwende vorher
hab ich mit QT. Werd mich dann heut mittag noch mal melden wie es war.

MfG
Ingo
 
Hallo

Scheint ganz gut zu sein soweit ich es unter Windows gesehen habe.

Aber wie bekomme ich es jetzt unter Linux(Knoppix) installiert war auf dieser Seite
http://sourceforge.net/project/showfiles.php?group id=89339
und hab mir alle Lazarus Linux i386 DEB Lazarus 0.9.22 heruntergeladen und versucht
sie über den Packagemanager zu installieren hat bis auf die lazarus_0.9.22-1_i386.deb
Datei auch geklappt aber bei der bekomm ich immer ne Fehlermeldung.
Ein Lazarus Icon ist auch schon im Entwicklungs Ordner aber ich kann es halt nicht
aufrufen. Was mach ich falsch oder wie installier ich es einfacher.

PS: komm nur über Windows ins Netz unter Linux geht´s leider nicht.

MfG
Ingo1
 
Also irgendwie hab ich es doch zum laufen bekommen aber wenn ich ein Program starten will schreibt Lazarus immer FATALER FEHLER Can´t find glib Unit
wo bekomm ich die her oder wie kann ich den Fehler beseitigen?


MfG
Ingo1
 
Also mit Lazarus unter Linux muß ich mal bei mir schauen. Bei mir läuft es unter RedHat und auch Debian.

Knoppix ist im Prinzip Debian, so daß dort normalerweise mit apt-get install <Paketname> installiert wird. Das funktioniert natürlich am besten im Netz, da dann auch gleich alle Abhängigkeiten aufgelöst werden. Aber wie gesagt da müßte ich noch mal nachschauen.

TabStop mußt Du nur auf False setzen, wenn Du die Tabulartotaste zum navigieren nutzen möchtest, das kann aber auch auf True stehen habe ich zumindest ausprobiert.

Um zu umgehen, das der Button beim Drücken einer Pfeiltaste oder der Entertaste aktiviert wird, mußt Du nur verhindern, das der Button den Focus erhält. Dazu schmeißt Du ein Editfeld auf das Formular und srtz Height und Width jeweils auf 0 - dadurch ist es unsichtbar. Das Feld nicht mit visible auf unsichbar schalten sonst krachts!
Dann kommt noch ein Timer auf das Formular. Den Timertick setzt Du auf ca. 50ms Die onTimer-Procedur sollte wie folgt aussehen:
Code:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if Button1.Focused then begin
     try 
       Edit1.SetFocus;
     except
     end;
  end
end;

Hierdurch erhält das nicht sichbare Editfeld den Focus, wenn der Button1 den Focus hat und Button1 verliert demzufolge den Focus. So kannst Du auch mit anderen Objekten verfahren indem Du deren Focus auf das nicht sichbare Editfeld umlenkst.
Zwar nicht super elegant - aber funktioniert. Du kannst dann Maus oder Taste benutzen und außerdem entfällt auch der Focusrahmen des Buttons.
 
Hallo

Habs geschafft in der Datei /etc/fpc.cfg waren falsche links angegeben danach konnte
ich mein Programm starten ist zwar noch nicht ganz so weit wie unter Kylix aber mal
sehen.

Jetzt hab ich aber ein neues Problem wenn ich in die Image Objekte ein Bild laden möcht und das Program dann ausführen will,
bekomme ich folgende Fehlermeldung:
Konnte VideoForm nicht streamen: TVideoForm Invalid horizontal pixel Index-1

Was hat das zu bedeuten? Und wie kann ich meine Bilder darstellen?

Trotzdem hab ich aber versucht das Programm auf einem anderen Rechner laufen zu lassen, doch das funktionierte leider nicht.
Ich hab den kompletten Projectordner auf meinen USB-Stick kopiert, von dem ich auf dem Zielrechner Knoppix Booten lasse. Und erst sah auch alles gut aus eine 7MB große Ausführbare Datei war dabei.Doch als ich dann Knoppix auf dem Zielrechner gebootet habe und in den Projectordner gegangen bin ist diese Datei auf einmal eine 7MB große Einfacher Text Datei.
Muß ich noch irgend was vorher machen damit ich das Progam ausführen kann?
Wenn ja was?

MfG
Ingo
 
Zuletzt bearbeitet:
Also, daß aus dieser Binärdatei plötzlich eine Textdatei wird mag ich nicht so richtig glauben. Aber sei's drum. Läuft denn diese Datei auf dem System wo Du sie kompiliert hast und zwar ohne IDE (also Lazarus bzw. Kylix). Ist die Datei wirklich ausführbar - mit
überprüfen. Versuch mal die Datei von einem Terminalfenster aus zu starten, dann siehst Du eventuelle Fehlermeldungen. Denk dran wenn Du im Verzeichnis bist mußt Du die Datei mit ./Datei starten.

Wieso ist Deine Datei überhaupt so groß. 7MB ist ein Haufen Holz. Ich arbeite derzeit an einem sehr großen Projekt (allerdings unter Windows mit Delphi) da ist die kompilierte EXE ca. 4,5MB (gepackt sogar nur 1,2MB) groß. Dabei ist zu bedenken, daß das Hauptprogramm aus über 100 selbst erstellten Units erzeugt wird, wobei die Hauptunit ca. 6500 Programmzeilen umfaßt und noch einige Units mit über 2000 Zeilen dabei sind. Hinzu kommt noch der Code der durch die benutzten Komponenten eingebunden wird.
Hast Du ganze Filme oder riesige Bitmaps eingebunden

Was für Image Objekte hast Du denn Poste mal ein bischen Quelltext Damit man besser nachvollziehen kann, was Du da machst.
 
Zurück