Laufschrift in Clipper 5

Still in use?

Moderator: Moderatoren

Antworten
Benutzeravatar
mini990
1000 working lines a day
1000 working lines a day
Beiträge: 592
Registriert: Sa, 28. Jan 2006 9:44
Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
Danksagung erhalten: 1 Mal

Laufschrift in Clipper 5

Beitrag von mini990 »

Hallo,
habe hier noch ein altes Clipper-Programm (ein Umschreiben lohnt sich nicht mehr).
Hier soll ein String, der länger als 80 Zeichen ist als Laufschrift ausgegeben werden.
Habe die NG zu Clipper und den Tools durchsucht aber nichts gefunden.
Geht das mit Clipper/ Tools III und ich habe was in der Doku übersehen?
Oder gibt's da irgendein Tool dafür? --> in der Suchfunktion habe ich ein AnimText.zip von Jimmy gefunden???

Gruß Stefan
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Laufschrift in Clipper 5

Beitrag von AUGE_OHR »

versuche mal diese Sourcen

Code: Alles auswählen

PROCEDURE LAUFTEXT( nZeile, spalte, endpos, string, delay, hoehe, zeichen )
/*  $DOC$
*  $FUNCNAME$
*    LAUFTEXT
*  $CATEGORY$
*  $ONELINER$
*    erzeugt Laufschrift Text
*  $SYNTAX$
*     LAUFTEXT(nZEILE, nSPALTE, nENDPOS, cSTRING, nDELAY, nHOEHE, cZEICHEN)
*  $ARGUMENTS$
*    <nZEILE>    = Anzeige in ZEILE
*    <nSPALTE>   = Anzeige in SPALTE
*    <nENDPOS>   = Endposition der Anzeige
*    <cSTRING>   = TEXT der angezeigt werden soll
*    <nDELAY>    = Zeit Verz"gerung
*    <nHOEHE>    = Ton H"he
*    <cZEICHEN>  = Loeschzeichen nach durchlauf des TEXTes
*  $RETURNS$
*  $DESCRIPTION$
*  $EXAMPLES$
*  $INCLUDE$
*  $SEEALSO$
*  $END$
   */

   LOCAL lang, zaehler, breit, teil
   LOCAL zeile

   DEFAULT nZeile TO MAXROW()

   IF nZeile == 23
      zeile := MAXROW() - 1
   ELSE
      zeile := nZeile
   ENDIF

   zaehler := 1
   teil := 0
   breit := spalte - endpos + 1

   IF PCOUNT() < 7
      zeichen := " "
   ENDIF

   string := TRIM( string ) + REPLICATE( zeichen, breit )
   lang := LEN( string )

   FOR zaehler = 1 TO lang
      INKEY( delay )

      IF teil == 0
         @ zeile, spalte - zaehler + 1 SAY SUBSTR( string, 1, zaehler )
      ELSE
         teil := teil + 1
         @ zeile, endpos SAY SUBSTR( string, teil, breit )
         LOOP
      ENDIF

      IF endpos == spalte - zaehler + 1
         teil := 1
      ENDIF
   NEXT

RETURN
oder diese Version

Code: Alles auswählen

FUNCTION LAUFSCHRIFT(m_zeile, m_spalte, m_endpos, m_string )
   **  SYNTAX    : Laufschrift (<ExpN1>,<ExpN2><ExpN3>,<ExpC>,      **
   LOCAL m_len, m_count, m_breite, m_teil
   m_teil   = 0
   m_breite = m_spalte - m_endpos + 1
   m_string = TRIM (m_string) + REPLICATE (" ",m_breite)
   m_len    = LEN (m_string)
   FOR m_count = 1 TO m_len
      IF m_teil = 0
         xx=SAVESCREEN(m_zeile,m_spalte-m_count+1,m_zeile,m_spalte+m_count+1)
         @ m_zeile,m_spalte-m_count+1 SAY SUBSTR (m_string,1,m_count)
         INKEY(0.01)
         RESTSCREEN(m_zeile,m_spalte-m_count+1,m_zeile,m_spalte+m_count+1,xx)
      ELSE
         m_teil = m_teil + 1
         xx=SAVESCREEN(m_zeile, m_endpos,m_zeile,m_endpos + m_breite)
         @ m_zeile, m_endpos SAY SUBSTR (m_string,m_teil,m_breite)
*        inkey(0.001)
         RESTSCREEN(m_zeile, m_endpos,m_zeile,m_endpos + m_breite,xx)
         LOOP
      ENDIF
      IF m_endpos = m_spalte - m_count + 1
         m_teil = 1
      ENDIF
   NEXT
   SET COLOR TO W+*/N
   @ m_zeile,m_spalte-m_count+1 SAY SUBSTR (m_string,1,m_count)
   INKEY(1)
   SET COLOR TO W/N
   RETURN (.T.)
gruss by OHR
Jimmy
Antworten