Problem mit dynamic_cast und Hint



  • Hallo Allerseits ....

    Ich erzeuge dynamisch in einer Schleife mehrere TLabel ´s. Es werden jeder Komponente die erzeugt wurde noch ein paar eigenschaften mitgegeben top left font usw. Klappt alles wunderbar bis auf der Eigenschaft Hint.

    und ich raff net warum ... ich habs jetzt schon über dynamic_cast versucht mit immer dem gleichen Ergebnis. in diesem Beispiel (i = 2) werden 3 TLabels erzeugt und angezeigt nun sollte Eigentlich beim ersten Hint "Lab2_0" stehen beim zweiten "Lab2_1" und dann "Lab2_2".
    er zeigt aber das an wo ich zuerst mit der Maus drüberfahre. also gehe ich zuerst über "Lab2_3" dann zeigt er mir überall "Lab2_3" an. 😕

    TLabel * Lab2 = new TLabel(SB);
    Lab2->Parent = SB;
    Lab2->AutoSize = true;
    Lab2->ShowHint = true;
    Lab2->Caption = "Schlüssel: \"" + errlist1->Strings[j] + "\"  ist Leer. Er kann daher gelöscht werden.";
    
    Lab2->Name = "Lab2_" + IntToStr(i);
    for(int f=0; f < SB->ComponentCount; f++)
    	{
    		if (Form3->SB->Components[f]->ClassNameIs("TLabel"))
    		{
    			if (dynamic_cast<TLabel*>(Form3->SB->Components[f])->Name == "Lab2_" + IntToStr(i))
    			{
    			   dynamic_cast<TLabel*>(Form3->SB->Components[f])->Hint = "Lab2_" + IntToStr(i);
    			   			}
    
    		}
    
    	}
    Lab2->Font->Name = "Calibri";
    Lab2->Font->Size = 8;
    Lab2->Top = itop+27;
    Lab2->Left = 35;
    

    Das ganze befindet sich natürlich in einer Schleife. i = Anzahl der zu erzeugenden TLabels aber das geht ja alles.

    Danke euch im Voraus

    Robert



  • Bevor gefragt wird: bzw hatte ich noch vergessen:

    SB ist eine ScrollBox wo dann die Labels wie in einer art liste dargestellt werden.
    Das ich hier im Hint den Namen der Komponente anzeige hat keinen sinn ist nur zum Testen. Normalerweise soll da der Inhalt von Caption rein der ja auch dynamisch ist und den gleichen Effekt aufweist.



  • das Problem kann ich so mit deinem Quellcode nicht nachvollziehen, jedes Label zeigt ein eigens Hint mit der entsprechenden Nummerierung an

    versuch am besten mal nur den von dir geposteten Quellcode in einer Schleife in einem neue Projekt

    [Edit]
    auch die direkte Zuweisung des Hint mittels

    Lab2->Hint = "Lab2_" + IntToStr(i);
    

    funktioniert problemlos



  • Hast recht .... Da funktioniert es. -- Danke

    Nur warum nicht im bestehenden Projekt ??? Ich werd noch weich in der Birne.
    Eventuell sind ja Irgendwelche Einstellungen falsch gesetzt in der ScrollBox usw. Ich such mal weiter ...

    Falls jemanden noch was einfällt .... hier ist noch Platz.

    Robert O.



  • So Fehler gefunden .....

    Wen es interessiert: Ich hatte in meinem Programm von LMD die Komponente TLMDHint drinn. Macht ganz nette Hints mit Icon usw. wenn der dann noch die richtigen Hints anzeigen würde 😃

    Habs rausgenommen und schwupps es Funktioniert.

    Wenn einer ne Lösung weis wie ich das Trotzdem mit dieser Komponente zum laufen bekommen wäre es schön.

    Ansonsten sag ich schonmal Frohe Festtage

    Robert O.


Anmelden zum Antworten