Autor Beitrag
wers1
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Mo 01.02.10 09:36 
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 user profile iconNarses: Topic aus VCL (Visual Component Library) verschoben am Mo 01.02.2010 um 09:38
thepaine91
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 763
Erhaltene Danke: 27

Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1331
Erhaltene Danke: 123

Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
BeitragVerfasst: Mo 01.02.10 20:35 
du könntest dir den TTimer mal näher anschauen.
wers1 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1331
Erhaltene Danke: 123

Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 806
Erhaltene Danke: 17

Win10
Delphi Alexandria 11.2 Patch 1
BeitragVerfasst: Di 02.02.10 09:20 
user profile iconwers1 hat folgendes geschrieben Zum zitierten Posting springen:
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.

_________________
mfg. Joel
wers1 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Di 02.02.10 09:31 
hier is er...

ausblenden 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;


ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.zeitTimer(Sender: TObject);
begin
display.ScrollBy(0,-1);
end;


ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 186
Erhaltene Danke: 2



BeitragVerfasst: Di 02.02.10 10:55 
Hallo,
eine andere Möglichkeit wie sich Scrollen noch realisieren lässt wäre folgendes:
ausblenden 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
  // Beim erster Verwendung Cursor an
  // gewünschte Startposition stellen
  startPos := redt1.selstart;
  endPos := startPos + 1;

  redt1.selstart := endPos;
  if redt1.selstart <> endPos then
  begin
    // Zeilenumbruch
    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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 186
Erhaltene Danke: 2



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 186
Erhaltene Danke: 2



BeitragVerfasst: Di 02.02.10 13:25 
Hast du beim Timer schon ein Ereignis, das regelmäßig aufgerufen wird. Dort kommt der Code hinein.
wers1 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1331
Erhaltene Danke: 123

Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 186
Erhaltene Danke: 2



BeitragVerfasst: Di 02.02.10 19:17 
user profile iconFinnO hat folgendes geschrieben Zum zitierten Posting springen:
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: msdn.microsoft.com/e...bb761615(VS.85).aspx

Bzw. können es keine Koordinaten sein, da sich diese mit der Schriftgröße mit/ändern müssen.