Aufgabe 4.5 – Keypad

 

Schreiben Sie eine Funktion keypad(keys,keysize), die ein Tastenfeld mit einer beliebig wählbaren Anzahl von Tasten erzeugt. Die Anordnung und Beschriftung der Tasten wird über den Parameter keys (NxM Cell-Array of Strings) angegeben, wobei N der Anzahl der Tasten in vertikaler Richtung und M der Anzahl der Tasten in horizontaler Richtung entspricht. Der zugehörige String definiert die Beschriftung der Taste. Der optionale Parameter keysize (2×1 Vektor = [Breite, Höhe]) erlaubt es, die Größe der Tasten in Zentimetern festzulegen. Geben Sie als Defaulteinstellung eine Tastengröße von 1cm x 1cm vor. Bei jedem Mausklick auf eine der Tasten wird der zugehörige String im Kommandofenster ausgegeben.
Ein Beispiel:

>> keys={’1′,’2′,’3′;’4′,’5′,’6′};
>> keypad(keys)

erzeugt das GUI-Fenster

keypad-gui-buttons-zahlen

und liefert bei Betätigen der Tasten 1, 5 und 3 die Ausgabe

1
5
3

im Kommandofenster.

Lösung

function keypad(keys,ksize)
	if nargin<2
		ksize=[1 1];
	end

	nx=size(keys,2);
	ny=size(keys,1);

	% create figure
	fhd=figure('menubar','none','numbertitle','off','units',...
		'centimeters','position',[0 0 nx*ksize(1) ny*ksize(2)]);
	movegui(fhd,'center')

	% create keys
	cbs='disp(get(gco,''String''))';
	for i=0:nx-1
		for j=0:ny-1
			uicontrol(fhd,'style','push','units','normalized',...
				'position',[i/nx j/ny 1/nx 1/ny], ...
				'String',keys{ny-j,i+1},'Callback',cbs);
		end
	end
end

Ähnliche Artikel

Kommentar verfassen