ein Kapitel zurück                                           ein Kapitel weiter

Noch der Scrollbar wollen wir uns nun das Scale Widget ansehen. Natürlich gilt auch für das Scale Widget, das selbe mit dem Adjustment wie schon bei den Scrollbars. Wir wollen uns zuerst wieder den Syntax für die Erstellung eines neuen horizontalen Scale Widgets ansehen:

GtkWidget *gtk_hscale_new(GtkAdjustment *adj);  

Das Argument für Adjustment haben sie schon kennen gelernt. Wollen wir uns doch zuvor das Scale Widget in der Praxis ansehen. Hierzu unser Quellcode:

/*Download:gktsca1.c*/

#include <gtk/gtk.h>

void ende_cb(GtkObject *object)
{
 gtk_main_quit();
}

int main(int argc, char **argv)
{
 GtkWidget *fenster;
 GtkWidget *box, *box2;
 GtkWidget *hscale1, *hscale2, *hscale3;
 GtkWidget *button_quit;
 GtkObject *adj1, *adj2, *adj3;

 /*Gtk initialisieren*/
 gtk_init(&argc, &argv);
 /*Ein neues Fenster erstellen*/
 fenster = gtk_window_new(GTK_WINDOW_TOPLEVEL);
 /*Buttons erstellen*/

 button_quit  = gtk_button_new_with_label("Ende");
 /*Neue Box erstellen*/
 box = gtk_hbox_new(FALSE,10);
 box2= gtk_vbox_new(TRUE,0);

 adj1 = gtk_adjustment_new(50.0, 0.0, 100.0, 0.1, 1.0, 1.0);
 adj2 = gtk_adjustment_new(0.0, 0.0, 100.0, 10.0, 1.0, 1.0);
 adj3 = gtk_adjustment_new(0.0, 0.0, 100.0, 1.0, 1.0, 1.0);

 hscale1 = gtk_hscale_new(GTK_ADJUSTMENT(adj1));
 hscale2 = gtk_hscale_new(GTK_ADJUSTMENT(adj2));
 hscale3 = gtk_hscale_new(GTK_ADJUSTMENT(adj3));


 /*Signale registrieren*/
 gtk_signal_connect_object(GTK_OBJECT(button_quit), "clicked",
                           GTK_SIGNAL_FUNC(ende_cb), GTK_OBJECT(fenster));
 gtk_signal_connect(GTK_OBJECT(fenster), "destroy",
                    GTK_SIGNAL_FUNC(ende_cb), NULL);


 /*Fensterposition*/
 gtk_window_set_position(GTK_WINDOW(fenster),GTK_WIN_POS_CENTER);

 gtk_container_set_border_width(GTK_CONTAINER(fenster),25);

 /*Nun alles rein in die Box....*/
 gtk_box_pack_start(GTK_BOX(box), hscale1, FALSE, FALSE, 0);
 gtk_box_pack_start(GTK_BOX(box), hscale2, FALSE, FALSE, 0);
 gtk_box_pack_start(GTK_BOX(box), hscale3, FALSE, FALSE, 0);
 gtk_box_pack_start(GTK_BOX(box2), box, FALSE, FALSE, 0);
 gtk_box_pack_start(GTK_BOX(box2), button_quit, FALSE, FALSE, 20);


 gtk_container_add(GTK_CONTAINER(fenster),box2);

 /*Zeigs uns.....*/
 gtk_widget_show_all(fenster);

 gtk_main();

 return 0;
}

Und so könnte es aussehen:




Wollen sie die Zahlen nicht anzeigen, so gibt es dafür die Funktion:

void gtk_scale_set_draw_value(GtkScale *scale, gboolen draw_value);  

Für den ersten Parameter geben sie bitte das Scale Widget an, auf welches sich diese Funktion beziehen soll. Auch hier benötigen wir wieder ein casten des Types mit GTK_SCALE(scale). Geben sie für den 2.Parameter FALSE an werden die Zahlen nicht angezeigt, geben sie TRUE werden sie angezeigt. In unser Programmbeispiel würden sie mit:

gtk_scale_set_draw_value(GTK_SCALE(hscale1), FALSE);  

die Anzeige des ersten Scale Widget links abschalten. Mit TRUE könnten sie die Anzeige wieder aktivieren.

Wollen sie die Anzahl der Stellen nach dem Komma verändern bzw. gar keine mehr anzeigen, so verwenden sie die Funktion:

void gtk_scale_set_digits(GtkScale *scale, gint digits);  

Damit stellen sie das Scale Widget scale auf digits Stellen Anzeige nach dem Komma. Maximal können sie 13 Stellen anzeigen lassen. Wollen sie keine Stelle nach dem Komma anzeigen, so geben sie 0 an. Beispiel:

gtk_scale_set_digits(GTK_SCALE(hscale1), 0); //keine Stellen nach dem Komma anz.
gtk_scale_set_digits(GTK_SCALE(hscale2), 10); //10 Stellen nach dem Komma anz.  

Die Position der Anzeige der Zahlen können sie mit der Funktion:

void gtk_scale_set_value_pos(GtkScale *scale, GtkPositionType pos);  

einstellen. Der erste Parameter ist wieder wie immer. Beim zweiten können sie folgende Angaben machen:

  • GTK_POS_LEFT - Anzeige an der linken Seite
  • GTK_POS_RIGHT - Anzeige an der rechten Seite
  • GTK_POS_TOP - Anzeige über dem Scale Widget
  • GTK_POS_BOTTOM - Anzeige unter dem Scale Widget

ein Kapitel zurück          nach oben           ein Kapitel weiter


© 2001,2002 Jürgen Wolf