text per makro markieren?

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

inqui
**
Beiträge: 26
Registriert: Di, 09.12.2008 08:16

text per makro markieren?

Beitrag von inqui »

hallo ... ich nochmal :)


ich hab meine "datenbank" soweit fertig - auch mit suchfunktion

nun würde ich aber auch gern, wenn ein treffer gefunden wird, diesen text dann auch markieren. so dass der nutzer gleich sieht wo der treffer steckt.
hab sowohl hier, als auch bei google, versucht zu suchen, aber da wird man natürlich überschüttet mit allem was mit "markieren" zu tun hat.

kennt von eich vll jemand eine funktion, die mir text markiert?


wär super


danke schonmal

inqui
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: text per makro markieren?

Beitrag von komma4 »

Es wäre schön, wenn Du Dein Problem so beschreiben würdest, dass man es auch versteht.
[Nun habe ich Deine anderen Posts erstmal gelesen]

Geht es um die Selektion von Tabellenzellen in Calc (mit den Treffern Deiner Suchfunktion)?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
inqui
**
Beiträge: 26
Registriert: Di, 09.12.2008 08:16

Re: text per makro markieren?

Beitrag von inqui »

hi komma


nein, es geht tatsächlich um den text

ich lese einzelne zellen in calc aus und stelle sie in textfeldern dar. da aber ein string in mehr als einer zelle vorkommen kann, würde ich gern den soeben gefundenen text markieren (hervorheben), so dass der nutzer nicht erst suchen muss, in welcher der dargestellten textfelder der string gefunden wurde.


ich hoffe das war jetzt klarer :)


danke auf jeden fall schonmal für die antwort :)


viele grüße

inqui
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: text per makro markieren?

Beitrag von komma4 »

Etwas...


Was meinst Du mit "markieren"?
Vielleicht die Schriftattribute der Textfelder mit [dem/den] Treffer[n] ändern: fett machen? Rot?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
inqui
**
Beiträge: 26
Registriert: Di, 09.12.2008 08:16

Re: text per makro markieren?

Beitrag von inqui »

mit "markieren" meinte ich erstmal das markieren mit der maus bzw. shift+curser tasten

aber schriftattribute klingt auch gut - erfüllt ja den gleichen zweck. müsste dann nur bei der nächsten aktion wieder rückgängig gemacht werden.

ich werd mal schaun ob ich da irgendwas zu finde :)

danke auch jeden fall für die idee :)



grüße

inqui
steffn
***
Beiträge: 92
Registriert: So, 16.11.2008 15:02

Re: text per makro markieren?

Beitrag von steffn »

ich habe auch das gefühl, dass du dich sehr ungenau ausdrückst
falls du anfänger bist, gebe ich dir den tipp:
wenn du versuchst etwas zu erklären, dann mach das so ausführlich wie gerade möglich
dadurch gibst du mehr informationen, was dazu führt, dass die erfahrenen benutzer dann eher verstehen, was du wirklich meinst - ganz so als hättest du die korrekten fachwörter benutzt =D
inqui hat geschrieben:nein, es geht tatsächlich um den text
um welchen?
inqui hat geschrieben:ich lese einzelne zellen in calc aus und stelle sie in textfeldern dar.
wo befinden sich die zellen, wo die textfelder?
inqui hat geschrieben:da aber ein string in mehr als einer zelle vorkommen kann, würde ich gern den soeben gefundenen text markieren (hervorheben), so dass der nutzer nicht erst suchen muss, in welcher der dargestellten textfelder der string gefunden wurde.
widerspruch? lies mal selber und überleg dann, ob du zelle oder textfeld meintest
inqui hat geschrieben:ich hoffe das war jetzt klarer :)
also mir nicht ^^
oo4.1.2 in winxp pro mit sp3
inqui
**
Beiträge: 26
Registriert: Di, 09.12.2008 08:16

Re: text per makro markieren?

Beitrag von inqui »

also dann nochmal ganz von vorn:

ich habe eine calc, bestehend aus einem sheet. wie schon erwähnt eine kleine datenbank. die spalte entsprechen den kriterien, die zeilen dementsprechend datensätzen.

damit die nutzer sich nicht durch ellenlange spalten scrollen müssen, habe ich einen dialog entworfen, indem ich inhalte von zellen in textfeldern darstelle. natürlich jeweils nur einen datensatz, also entspricht jedes textfeld der zelle einer zeile.

dazu habe ich nun eine suchfunktion geschrieben, welche alle zellen der tabelle nach dem string im suchfeld durchsucht und bei einem treffer den entsprechenden datensatz im dialog anzeigt. bei erneuter betätigung das makros wird ab der stelle des letzten treffers weitergesucht.
hier liegt nun das problem: kommt der gesuchte string im selben datensatz nocheinmal vor, wird dieser, bei erneuter betätigung des makros, auch wieder angezeigt. für den nutzer sieht das so aus, als wäre gar nichts passiert.
als beispiel: der nutzer sucht nach "meier". der string kommt im feld "name" vor -> erster treffer, datensatz wird angezeigt. -> der nutzer startet das makro nocheinmal -> "meier" kommt im feld "mail-adresse" vor -> zweiter treffer im gleich datensatz -> gleicher datensatz wird angezeigt -> am bildschirm ist nicht passiert
um dem nutzer zu zeigen, dass dies aber tatsächlich der zweite treffer ist, würde ich nun gern beim ersten treffer den string "meier" im feld "name" blau hinterlegen (farbe egal). beim zweiten dann den string "meier" im feld "mail-adresse".
im prinzip genauso wie es die interne suche von excel oder calc machen.
wenn das nicht so einfach zu machen ist, würde auch einfach den ganzen text des textfeldes, das den treffer enthält einfärben.

so ich hoffe mit dem entwas längeren text konnte ich klar machen worums geht :)
sorry das war wohl alles ein bischen wirr ...


ps: eine frage noch: gibt es auch eine möglichkeit beim schliessen des dialogs die ganze anwendung zu schliessen und abzuspeichern? ich habe den den eigenschaften des dialogs, unter ereignisse, nur die möglichkeit "bei fokusverlust" gefunden. aber dann würde es ja schon ausgeführt, wenn ich nur in ein andres fenster wechsele, odeR?
wenn das in einen eigenen thread gehört, bitte kurz bescheid sagen :)



danke schon mal für die mühe :)


inqui
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: text per makro markieren?

Beitrag von komma4 »

ich stelle mal Dein ganzes Konzept in Frage:

Deine Daten befinden sich in einem Calc-Blatt: warum kann Dein Anwender nicht die interne Suche alle nutzen? Willst Du den Dialog nicht schliessen, wenn die Suche eingegeben (=abgeschickt) wurde?
Wie verhinderst Du, dass Treffer unterhalb des Dialoges liegen?
Was soll passieren, wenn (weitere) Treffer ausserhalb des sichtbaren Bereichs liegen?

Dieser Code setzt den Cursor auf die erste Fundstelle:

Code: Alles auswählen

Sub de92039

oCalcDatei = ThisComponent
oBlatt = ThisComponent.getSheets.getByIndex(0) 
oSD = oBlatt.createSearchDescriptor()

With oSD 
 .Searchwords = TRUE
 .SearchString = "Meier"
End With

'Ausgabe der Fundstellen
'print oBlatt.findAll( oSD ).AbsoluteName

oFundstellen = oBlatt.findAll( oSD )
'xray oFundstellen

' Auswahlcursor auf erste Fundstelle
oCalcDatei.CurrentController.select( oFundstellen )

End Sub
Fehler im Code!: .select() wird korrekterweise mit einem RANGE-Object bestückt - habe aber aktuell keine Lust das rauszusuchen 8)
Das Lustige ist, dass bei Aktivierung der XRay-Zeile alle Fundstellen wie gewünscht unterlegt werden.

Zu Deiner Zusatzfrage: wie wird der Dialog geschlossen, bzw. überhaupt aufgerufen?

Du kannst das Dokument speichern, schliessen - oder auch OOo selbst ... wie hättest Du es gerne?

Auch an Dich die Bitte zwecks Lesbarkeit ab und zu die Grossstelltaste zu nutzen; Danke!
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Antworten