BCB6, Behöver placera text - men hur?

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
Användarvisningsbild
Icecap
Inlägg: 26628
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

BCB6, Behöver placera text - men hur?

Inlägg av Icecap »

Håller på att göra ett program i Borland C Builder 6.

Jag behöver att ha ett större - okänd - antal textrader i en TMemo. Den delen är hur enkelt som helst.

Men jag behöver kunde styra scrollningen av det TMemo så att det alltid visas:
* de 3 rader innan min fokus. (två med text + en blank rad)
* två rader som är min fokus.
* 3 rader efter min fokus. (en blank rad + två med text)

Och jag kan ta mig tusan inte räkna ut hur jag ska göra detta.

Min tanke är att TMemo't bara ska visa 8 rader och att jag kan styra "rullningen" baserat på ett externt input.

Men hur mycket jag än kollar igenom TMemo finner jag ingen property som medger att jag kan styra scrollningen.

Tips?
Användarvisningsbild
baron3d
EF Sponsor
Inlägg: 1353
Blev medlem: 1 oktober 2005, 23:58:43
Ort: Torestorp

Re: BCB6, Behöver placera text - men hur?

Inlägg av baron3d »

Har för mig att SelStart, SelLength och Perform kan hjälpa.

Memo1->SelLength = x;
Memo1->SelStart = x + y;
Memo1->Perform( EM_SCROLLCARET, 0, 0 );
Användarvisningsbild
Icecap
Inlägg: 26628
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: BCB6, Behöver placera text - men hur?

Inlägg av Icecap »

Sedär, då har jag lärt mig något nytt! Jag tror bestämt att detta kan vara vägen fram, tack så mycket!

EDIT: Har gjort en testcase och det fungerar! Dock är det et par mindre grejer som är tråkiga men inget jag inte kan åtgärda.
Ska jag rulla upp måste jag placera TMemo->SelStart på den understa raden som ska visas och ska jag rulla ner ska den placeras på den översta raden som ska visas.

Men det är till att lösa, det är bara en fråga om att kolla lite i texten som visas så denna metod fungerar.

Det hjälper mig väldigt mycket - men det blir efter helgen. Min hjärna är dysfunktionell pga. värme och för att min kollega ringde mig 03:15 här till morgon. Det var en situation som inte kunde klaras på annat sätt och för mig tog det kort tid - men jag fick kliva upp, klä mig lagom mycket till att inte skrämma slag på honom och sedan öppna en dörr. Inte helt lätt att somna om därefter.

Mer EDIT: Jupp, detta löste problemen. Jag har nu en fungerande funktion, den är tyvärr lite Q&D i andra delar men fungerar gör den.
Jag har en rutin för att ge vilket index som en given rad i texten (ska anges som char-index) och det jag gör är att:
* Läsa och spara SelStart. Detta är cursorns placering och den ska ju återställas.
* Placera SelStart på den understa raden som ska synas och exekvera en scroll.
* placera SelStart på översta raden som ska visas och exekvera en scroll.
* Återställa SelStart från det sparade värdet.
Skriv svar