Entwickler-Ecke
Sonstiges (Delphi) - Programm welches Lesungen unterstützt
wers1 - Mo 01.02.10 09:36
Titel: Programm welches Lesungen unterstützt
Hallo liebe Delphi Profis,
ich habe Programmidee, welche hoffentlich nich allzu kompliziert ist, leider aber sicher meinen Delphi-Horizont übersteigen würde.
Und zwar... Soll das Programm den Anwender unterstützen wenn er etwas Vorträgt/liest. Des heißt den Text müsste man eingeben können (mit Formatierung) und dann solte dieser in Wählbarer Geschwindigkeit gescrollt werden (natürlich der Text auch entsprechend groß), dazu wären noch vor- zurück und eine Pause-Taste hilfreich.
Leider habe ich bis auf Berechnungen in irgendwelcher geometrisches Körpern keinen PLan von delphi und habe die Befürchtung dass ich das nicht hinkriegen würde... Könnte mir jemand von euch solch ein Programm basteln oder aktive Unterstützung leisten? Als Gegenleistung kann ich leider nur einen Werbeplatz auf meinem Blog anbieten.
Fasst euch ein Herz ;)
Schönen Tag noch...
Felix
Moderiert von
Narses: Topic aus VCL (Visual Component Library) verschoben am Mo 01.02.2010 um 09:38
thepaine91 - Mo 01.02.10 09:41
Hört sich jetzt garnicht so kompliziert an. Richedit für den Text bietet auch alle nötigen Formatierungen. Und das Scrollen wäre ganz simple über einen Timer zu lösen Pause dementsprechend einfach. Vor zurück sollte auch nicht so schwierig sein.
Fang das Projekt doch einfach mal an bei Fragen helfen wir dir gerne. ;)
wers1 - Mo 01.02.10 09:47
super, vielen dank für die schnelle antwort... werde mein glück mal versuchen... meld mich voraussichtlich morgen...
danke
felix
wers1 - Mo 01.02.10 20:31
erstmal vorsichtshalber ein vorwort: ich bitte darum "lern erstmal die grundlagen!"-Aussagen erstmal zurückzustellen, ich werde delphi in der schule lernen step by step - so kommen auch keine schlechten angewohnheiten^^... außerdem vermute ich dass cih viele Fragen haben werde und ich die Moderatoren um Toleranz bitte, auch wenn sich das hier, mangels meiner kenntnisse, zu einem Chat entwickeln könnte :(
nun zum Thema: Habe jetzt ein neues projekt gemacht und ein richedit feld und 4 buttons (vor, zurück, pause, beenden) gemacht... und dann hörts schon auf :( wie sollte ich nun fortfahren?
bitte helft mir :(
FinnO - Mo 01.02.10 20:35
du könntest dir den TTimer mal näher anschauen.
wers1 - Mo 01.02.10 20:41
okay der ist drin, jetzt ist ein intervall von 1000 voreingestellt... ich glaube mal gehört zu haben dass 1000 1sekunde ist. jetzt müsste ich dem programm also irgendwie beipringen, dass er wenn der timer 2s läuft der die zeile n+1 und alle folgenden zeigen soll, richtig? wenn ja weiß ich jetz leider immernoch nich ansatzweise wie ich das in delphi umsetze :(
korrektur: ich müsste wohl dem timer als objekt sagen dass er wenn der intervall ausläuft, dem anderen objekt sagen soll dass es ab zeile n+1 zeigen soll und dann sich erneut starten soll bis keine zeile n+1 mahr da is, jetz richtig?
FinnO - Mo 01.02.10 20:55
jetzt richtig.
geht aber auch insofern einfacher, als dass das RichEdit die Funktion ScrollBy mitbringt. So. Das war jetzt aber echt genug info :P
wers1 - Mo 01.02.10 21:03
okay super, jetz hab ich erstmal nen plan und kann bissl probiern.... melde mich morgen mit meinen, hoffentlich weitreichenden, erbgebnissen
schönen abend noch
wers1 - Di 02.02.10 08:58
juhuu.. scrollen funktioniert schon mal in unterschiedlichen Geschwindigkeiten/Zeitabständen... vor geht auch... nur der zurück button will nicht... da entstehen dopplungen bei den buchstaben... das heißt ich habe eine zeile nach 5 mal zurück klicken gleich 5 mal. was kann ich dagegen tun?
PS: vielen dank erstmal bis hier her
JoelH - Di 02.02.10 09:20
wers1 hat folgendes geschrieben : |
| was kann ich dagegen tun? |
Einfach mal ein bisschen Code posten, damit wir daran teilhaben können. Fehlerquellen blind zu bestimmen ist wie einen unbekannten Text Weiß auf Weiß lesen zu wollen.
wers1 - Di 02.02.10 09:31
hier is er...
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| procedure TForm1.startClick(Sender: TObject); var i,t : integer; begin val(zeitintervall.Text,t,i); zeit.Interval:=t; zeit.Enabled:=true; end; |
Delphi-Quelltext
1: 2: 3: 4:
| procedure TForm1.zeitTimer(Sender: TObject); begin display.ScrollBy(0,-1); end; |
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure TForm1.pauseClick(Sender: TObject); begin zeit.Enabled:=false; end;
procedure TForm1.vorClick(Sender: TObject); begin display.ScrollBy(0,-30); end;
procedure TForm1.backClick(Sender: TObject); begin display.ScrollBy(0,10); end; |
das dürfe der ganze relevante code sein... das problem bei zurück button ist, dass der immer wieder von zeile 0 aus zurückspringen will...
martin300 - Di 02.02.10 10:55
Hallo,
eine andere Möglichkeit wie sich Scrollen noch realisieren lässt wäre folgendes:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| procedure TForm1.btn1Click(Sender: TObject); var startPos : Integer; endPos : Integer; begin startPos := redt1.selstart; endPos := startPos + 1;
redt1.selstart := endPos; if redt1.selstart <> endPos then begin redt1.selstart := startPos + 2; redt1.Perform(EM_LINESCROLL,0,1); end; redt1.SetFocus; end; |
redt1 ist die Richedit Komponente. Das ganze einem Button zuweisen und sehen was passiert. Der Button dient als Ersatz für den Timer, damit der Code übersichtlicher ist.
wers1 - Di 02.02.10 12:26
habe die variante jetz einfach mal so übernommen, jedoch kommt da bissl was andres.. immer wenn cih auf den button klicke springt der 1 Zeichen weiter, beim nächsten mal wieder.. und so weiter..
martin300 - Di 02.02.10 12:54
Naja, es war auch nicht so gedacht das es so zu übernehmen ist. Es soll nur zum Nachdenken anregen.
wers1 - Di 02.02.10 13:04
hmm... zum nachdenken hatte es mich auch angeregt ;)
aber leider versteh ich denk quellcode nich wirklich... gibts auch ne möglichkeit mit meinem unübersichtlichen quelltext das halbwegs hinzukriegen?
martin300 - Di 02.02.10 13:25
Hast du beim Timer schon ein Ereignis, das regelmäßig aufgerufen wird. Dort kommt der Code hinein.
wers1 - Di 02.02.10 15:10
ahh... jetzt läuft er jede sekunde einen buchstaben weiter, scrollt aber nicht. (ich vermute dass er scollen würde wenn der text über das feld hinaus ginge, aber das ist ja ncih sinn der sache, dass der leser auf den text warten muss...
Blackheart666 - Di 02.02.10 15:58
Wenn du nur zeilenweise scrollen möchtest dann nimm doch
RichEdit.Perform(EM_LINESCROLL,0,1);
für vor und
RichEdit.Perform(EM_LINESCROLL,0,-1);
zurück
FinnO - Di 02.02.10 18:40
hm Also ich verstehe wirklich nicht, was gegen die Mitgelieferte Funktion Richedit.Scrollby(X,Y) spricht. Also nur das Scrollen ist damit in 1 Zeile zu bewältigen. Um noch am anfang zu starten noch eine Zeile, macht unterm Strich 2...
martin300 - Di 02.02.10 19:17
FinnO hat folgendes geschrieben : |
| hm Also ich verstehe wirklich nicht, was gegen die Mitgelieferte Funktion Richedit.Scrollby(X,Y) spricht. |
For future reference the EM_LINESCROLL message is what you send to any multi-line edit control to set the scroll position. You can scroll vertically or horizontally. See MSDN for details.
siehe:
http://msdn.microsoft.com/en-us/library/bb761615(VS.85).aspx
Bzw. können es keine Koordinaten sein, da sich diese mit der Schriftgröße mit/ändern müssen.
FinnO - Di 02.02.10 19:51
doch, es sind in der Tat koordinaten, und zwar pixel. Es wird nicht Zeilenweise gescrollt sondern Pixelweise, sonst wäre ja auch smoothes scrollen nicht möglich.
Dude566 - Di 02.02.10 19:59
wers1 hat folgendes geschrieben : |
"-Aussagen erstmal zurückzustellen, ich werde delphi in der schule lernen step by step - so kommen auch keine schlechten angewohnheiten
|
Muss nicht sein, man kann auch in der Schule viel misst lernen der keinen Sinn macht.
Eine Grundlage (Crashkurs) dürfte dich auch jeden fall einen Schritt weiter bringen, denn in der Schule muss auch nicht immer alles richtig Unterrichtet werden. :roll:
wers1 - Mi 03.02.10 06:47
FinnO hat folgendes geschrieben : |
| doch, es sind in der Tat koordinaten, und zwar pixel. Es wird nicht Zeilenweise gescrollt sondern Pixelweise, sonst wäre ja auch smoothes scrollen nicht möglich. |
und genau das gefällt mir an der variante ;) man kann pixelweise scrolen und nur die zeit verringern wenns schneller gehn soll.... dadurch wird die gefahr gesenkt dass sich das auge beim lesen verirrt und das auge sieht ja den quelltext eh nich ;)
mein problem bei der variante ist wie gesagt noch der zurück button... falsl dies nicht möglich ist muss ich's wohl immer mit der scrollbar versuchen...
aber noch eine andere frage: wenn ich auf dem 2. bildschirm powerpoint offen hab, jedoch keine tastatur/maus zur verfügung hab (nuch touchscreen auf monitor-delphi), kann ich durch buttons in delphi irgendwie erreichen, dass er eine Folie weiter bzw. zurück springt?
vielen dank nochmals für eure hilfe.
PS@dude: ich vertraue meinem infolehrer in der hinsicht ziemlich gut, der Mann hat wirklich ahnung im gegensatz zu manch anderen an meiner Schule ;)
FinnO - Mi 03.02.10 11:19
Delphi-Quelltext
1: 2:
| richedit.selstart := 0; richedit.sellength := 0; |
würde zum Anfang springen.
wers1 - Mi 03.02.10 14:18
ähhm ;) naja mit zurück wollte ich eigentlich z.B. 100 pixel zurück-springen und nicht zum anfang wieder gehen. das ist im moment mein problem... und natürlich die powerpointsteuerung.
anfügung: zum thema powerpoint habe ich was im netz gefunden.
http://www.swissdelphicenter.ch/torry/showcode.php?id=1005 werde das mal bei gelegenheit ausprobieren... hoffe mal, dass das auch mit den monitoren funzt.
wers1 - Mi 03.02.10 19:08
soo, das werk ist vollbracht ;) powerpoint funktioniert, der zurück button leider noch nicht. Aber was anderes tat sich auf: kann man mit delphi 7 gesten (das heißt z.B. fingerwisch nach links = vor) hinzufügen? bzw. könnte mir jemand wenn das programm fertig ist, kurz jemand die gesten einfügen (codes sind alle schon als buttons vorhanden), hab nämlich gehört, dass delphi 2010 das hat.
FinnO - Mi 03.02.10 19:50
na ja, wenn du das Vorzeichen bei Scrollby mal umtauschen würdest, ginge es zurück :P
elundril - Mi 03.02.10 23:26
wers1 hat folgendes geschrieben : |
| kann man mit delphi 7 gesten (das heißt z.B. fingerwisch nach links = vor) hinzufügen? bzw. könnte mir jemand wenn das programm fertig ist, kurz jemand die gesten einfügen (codes sind alle schon als buttons vorhanden), hab nämlich gehört, dass delphi 2010 das hat. |
ich glaub die
Jedis [
http://www.delphi-jedi.org/] haben eine Komponente dabei mit der man Mausgesten umsetzen kann.
lg elundril
wers1 - Do 04.02.10 06:46
FinnO hat folgendes geschrieben : |
| na ja, wenn du das Vorzeichen bei Scrollby mal umtauschen würdest, ginge es zurück :P |
so schlau war ich auch schon ;) aber fehlanzeige... er geht immer zurück bis zur 1. zeile... schreibt von der dann vllt 5 px hin und scrollt natürlich weiter nach unten somit steht dann die hälfte der 1. zeile ganz normal im e4igentlich viel weiter hinten kommenden text
@enundril: ich werd mal gucken was es da zu finden gibt... klingt ja ziemich vielversprechend
danke nohcmal an alle
wers1 - Do 04.02.10 06:53
okay, also mein delphi/englisch verständnis hat nich wirklich ausgreicht um irgendwas in erfahrung zu bringen... leider...
elundril - Do 04.02.10 10:45
Weil ich so ein netter, toller, herzensguter Mensch bin :zwinker: , hab ich mir mal die Muh (wirklich Mühe wars ja ned deswegen nur die einzahl) gemacht und die Komponente rausgesucht. Sie heißt TJvMouseGesture und sie funktioniert tatsächlich. Ich hab mir mal den Spass erlaubt und eine Demoapplication geschrieben und im Anhang hochgeladen. Sollte nur n veranschaulichen was sie kann und nicht wirklich was darstellen ;)
lg elundril
P.S.: Während dem ausführen einer Mausgeste nicht aus dem Form fahren, sonst funktionierts ned wirklich ;) Ausführen tut man sie indem man die rechte Maustaste drückt und während dem gedrückt lassen in eine richtung fährt (oben, unten, links oder rechts)
P.P.S: Source gibts dann auf anfrage ;)
FinnO - Do 04.02.10 18:25
btw. Mausgesten und Multitouch werden ab Delphi 2010 nativ unterstützt.
BenBE - Sa 06.02.10 17:11
elundril hat folgendes geschrieben : |
| Sie heißt TJvMouseGesture und sie funktioniert tatsächlich. |
Spaß am Rande: Schreibschrift-L (Senkrechten Bogen recht kurz lassen, links ne Schlaufe und dann weit nach rechts ziehen) führt zu Vorwärts spulen :P
wers1 - So 07.02.10 17:17
dank der RIESEN HILFE von ELUNDRIL ist das prog jetzt fast fertig.
nur der zurück button funktioniert noch nicht :( mit negativen werten ist es leider nciht getan. hat noch jemand eine andere idee?
wers1 - Mo 08.02.10 22:11
soo, nun der 1. praxistest und da war er: der worst-case
das scrollen funzt nur solange wie der text auf die anzeigefläche bzw. das richedit-feld passt - ansonsten scrollt er (habe 1 pxeingestellt) nicht, sondern wiederholt die letzten pixel nur und die letzte zeile wird "verlängert"
sprich: es fiunktioniert nicht
ich vermute man muss zu einer anz anderen methode grefien, hat jemand eine idee´?
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!