Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Listensteuerelement Farbe einzelner Zeile Ändern

Empfohlene Antworten

Veröffentlicht

Hallo,

kann mir jemand sagen wie ich bei einem Listensteuerelement die Farbe einer einzelnen Zeile ändern kann? Sobald ich Farbangaben für den Hintergrund oder den Text mache, so wird die Farbe in allen Zeilen dargestellt. Naja auf jeden Fall wird die letzte Farbänderung auf alle Zeilen angewendet und macht damit die vorherigen Angaben damit immer zunichte.

SYS W2K

VC 6.0

MFC Anwendung

danke

// Draw the background color

if( bHighlight )

{

pDC->SetTextColor(::GetSysColor(COLOR_HIGHLIGHTTEXT));

pDC->SetBkColor(::GetSysColor(COLOR_HIGHLIGHT));

pDC->FillRect(rcHighlight, &CBrush(::GetSysColor(COLOR_HIGHLIGHT)));

}

else

{

CRect rcClient, rcRow = rcItem;

GetClientRect(&rcClient);

rcRow.right = rcClient.right;

pDC->FillRect(rcRow, &CBrush(nItem%2 ? ::GetSysColor(COLOR_WINDOW) :

RGB(255,255,0)));

}

--> das so sollte funzen... musste in die DrawItem() - Methode packen

Muß ich dazu mit dem pDC arbeiten oder geths auch anders ? Ich bearbeite das Listenelement in der Dialogklasse mit der ControlVariable und die Änderung der Farbe klappt ja auch, nur nicht in einer einzelnen Zeile ?

Aber trotzdem schon mal danke für den Hinweiß.

Hallo,

ich ändere die Farbe auch in der Klasse unter DrawItem.

Um z.B. eine unterschiedliche Fareb in gerade und ungeraden Zeilen und eine extra Fareb in der gerade markierten Zeile einzustellen habe ich folgenden Code eingefügt:

if(lpDrawItemStruct->itemState&ODS_SELECTED)//Zeile ist ausgewählt

{

	// Selected

	if (lpDrawItemStruct->itemID&0x01 != 0) // ungerade Zeile

	{

		back_color =  RGB(200,0,200);

		for_color =  ::GetSysColor(COLOR_HIGHLIGHTTEXT);

		image_style = ILD_BLEND25;

	}

	else //gerade Zeile

	{

		back_color =  RGB(0,200,100);

		for_color =  RGB(0,0,5);

		image_style = ILD_BLEND25;

	}

}

else

{

	if (lpDrawItemStruct->itemID&0x01 != 0) // ungerade Zeile

	{

		back_color= RGB(0,128,128);

		for_color =  RGB(255,255,128);

		image_style = ILD_NORMAL;

	}

	else //gerade Zeile

	{

		back_color= RGB(128,0,128);

		for_color =  RGB(128,255,255);

		image_style = ILD_NORMAL;

	}

}


CBrush brush;


brush.CreateSolidBrush(back_color);


cdc->FillRect(item_rect,&brush);

cdc->SetBkColor(back_color);

cdc->SetTextColor(for_color);

Hilft Dir das weiter?

  • 2 Wochen später...

Ich muß zugeben nicht so sehr, da habe ich noch ein paar Fragen an Dich.

An welcher Stelle rufst Du die DrawItem() auf ?

Bisher habe ich ausschließlich über die ControllVariable das Listenelement bediehnt, sprich gefüllt und ausgelesen. Ich denke mal, da Du auch mit cdc arbeitest ist dein Ansatz ein anderer. Wie ich die Textfarbe für alle ändere das weiß ich ja, mir fehlt die selektierung der einzelnen Zeile.

Ich vermute mal das das Steuerelement erst gefüllt werden muß bevor ich einzelne Zeilen wieder ändern kann.

Ich vermute weiterhin, das Du bevor Du die DrawItem() aufrufst eine bestimmte Zeile selektiert hast ?

Gruß Joerg

  • 1 Monat später...

Jo, ich habe mir ne eigene Klasse von der CListCtrl abgeleitet und da die DrawItem Funktion überschrieben.

Mit dem Standard Controll gehts glaub ich net für jede Zeile, oder wenn weiss ich nicht wie :(

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.