Posts mit dem Label tutorial werden angezeigt. Alle Posts anzeigen
Posts mit dem Label tutorial werden angezeigt. Alle Posts anzeigen

Mittwoch, 9. April 2014

Wartungslog

Wartungslog meiner Intruder

Reparatur des Mitnehmerrings der Tachoschnecke

  • 30.03.2014 - durch Andi

Ölwechsel und Zuendkerzenwechsel

  • km Stand ca. 57430 km
  • 05.04.2014 - Ölwechsel
  • 09.04.2014 - Zündkerzen
  • 20.05.2016 bei 63500 km - Öl
  • 15.05.2016 bei 63500 km - Zündkerzen

Suzuki Intruder Ölwechsel

Was gibt es zu beachten:


Öl:
  • SAE 10 W 40
Menge:
  • nur Ölwechsel 3,7 L 
  • inkl. Ölfilter 4,3 L 
  • Motorüberholung 5 L
Ölstand:
  • Der Ölstand ist unter folgenden Bedingungen zu prüfen:
    • Das Motorrad steht senkrecht auf ebenem Boden
    • Das Gewinde des Einfüllstutzendeckels ist nicht eingeschraubt, sondern berührt nur den oberen Rand der Einfüllöffnung

Videoanleitung:

Mittwoch, 4. September 2013

DOS - Kopieren von allen Dateien aus Unterordnern in ein anderes Verzeichnis

Wenn mann viele Bilder in Unterordnern verteilt hat und die alle mal in nur einem Verzeichnis 'versammeln' möchte, kann man mit Windows und Drag and Drop ziemlich beschäftigt sein.
Unter Linux ist es kein Problem über XTerm und co die Files herumzuschieben und zu kopieren. Unter Windows braucht man dann mal das DOS Fenster (Start -> Ausführen -> cmd).
Meine DOS Erfahrungen liegen fast 20 Jahre zurück.

Deshalb hat Google mir mal wieder geholfen, da ich nur eine englische Antwort gefunden habe, und damit ich sie wiederfinde hier nochmal in meinem Blog auf deutsch.

Also der DOS Befehl zum kopieren aller Dateien aus den Unterordnern eines Verzeichnisses:
als Beispiel mal hier aus dem Verzeichnis c:\split in das Verzeichnis c:\Neuer Ordner

cd /d "c:\split"
for /r %d in (*) do copy "%d" "c:\Neuer Ordner"

Freitag, 30. August 2013

How to post in WordPress Blog out of my app

Is there a way i can create and publish a blogpost in my wordpressblog out of my app? I need examples/tutorials. I ve read about the API but didn't get the clue how to implement this in my android app. Does this work only on wordpress.com hosted sites or can i use my own?
import java.net.MalformedURLException;
import java.util.List;
import redstone.xmlrpc.XmlRpcFault;
import net.bican.wordpress.Page;
import net.bican.wordpress.PageDefinition;
import net.bican.wordpress.Wordpress;

/**
 * 
 * Example implementation
 * 
 * Run this as java net.bican.wordpress.example.Main <username>
 * <password> <xmlrpc-url> for your blog.
 * 
 * @author Can Bican
 * 
 */
public class wordpressHelper {

 /**
 * @param args
 * @throws MalformedURLException
 * @throws XmlRpcFault
 */
 @SuppressWarnings("nls")
 public static void main(String[] args) throws MalformedURLException,
 XmlRpcFault {
 String username = args[0];
 String password = args[1];
 String xmlRpcUrl = args[2];
 Wordpress wp = new Wordpress(username, password, xmlRpcUrl);
 List<Page> recentPosts = wp.getRecentPosts(10);
 System.out.println("Here are the ten recent posts:");
 for (Page page : recentPosts) {
 System.out.println(page.getPostid() + ":" + page.getTitle());
 }
 List<PageDefinition> pages = wp.getPageList();
 System.out.println("Here are the pages:");
 for (PageDefinition pageDefinition : pages) {
 System.out.println(pageDefinition.getPage_title());
 }
 System.out.println("Posting a test (draft) page from a previous page...");
 Page recentPost = wp.getRecentPosts(1).get(0);
 recentPost.setTitle("Test Page");
 recentPost.setDescription("Test description");
 String result = wp.newPost(recentPost, false);
 System.out.println("new post page id: " + result);
 System.out.println("\nThat's all for now.");
 }
}

I also put in the jwordpress-0.5.1.jar and added that in the classpath.
I get the swirling red line underneath redstone import redstone.xmlrpc.XmlRpcFault;
-> The import cannot be resolved...
2nd july 2013: I managed to get rid of the import problem... I downloadedhttp://sourceforge.net/projects/xmlrpc/files/%28New%29%20Redstone/1.1.1/ an extracted the zip file Then added all files in a new package into src. The import works right now but next Problem is that the javax.servlet cannot be resolved...

Samstag, 29. Juni 2013

ToogleButtons im AlertDialog

Für mein Golfapp Projekt (siehe meine Golfseite ) musste ein AlertDialog her. Es hat ganz schön lang gedauert, eh ich das so hinbekommen habe, wie ich es mir vorstellte:

Nach dem Klick auf einen Button im 'Main' Layout soll sich ein Dialog öffnen, in dem Texteingaben möglich sind und auch angeklickt werden kann, wo der Drive gelandet ist. Dis habe ich mit Togglebuttons realisieren wollen.


Problematisch war, dass immer nur ein Button 'An' sein sollte. Die Lösung hat mich ganz schön Zeit gekostet:). Schließlich fand ich heraus, dass ich für jeden der Buttons ein OnCheckedChangeListener brauche.

Hier der Code des Alertdialogaufrufes zur Eingabe der Abschlagslänge -Richtung und der Einlochdistanz:

public void pDrvPutClick(View v){
    final Button b = (Button) v;
   
     LayoutInflater inflater = getLayoutInflater();
      View dstView = inflater.inflate(R.layout.dlg_drvput, null);
     
       AlertDialog.Builder builder = new AlertDialog.Builder(context) ;
      builder.setView(dstView);
      final EditText edit_ddst = (EditText) dstView.findViewById(R.id.drvDst);
      final EditText edit_pdst = (EditText) dstView.findViewById(R.id.putDst);
      final ToggleButton rb1 = (ToggleButton) dstView.findViewById(R.id.rb_hit);
      final ToggleButton rb2 = (ToggleButton) dstView.findViewById(R.id.rb_left);
      final ToggleButton rb3 = (ToggleButton) dstView.findViewById(R.id.rb_right);
      final ToggleButton rb4 = (ToggleButton) dstView.findViewById(R.id.rb_miss);
     
        //Klickhandling OnCheckedChangeListener fuer jeden Button
      rb1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){
      @Override
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
         {
             if ( isChecked )
             {
                 rb2.setChecked(false);
                 rb3.setChecked(false);
                 rb4.setChecked(false);
             }
         }
      });
     
      rb2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){
          @Override
          public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
             {
                 if ( isChecked )
                 {
                     rb1.setChecked(false);
                     rb3.setChecked(false);
                     rb4.setChecked(false);
                 }
             }
          });
      rb3.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){
          @Override
          public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
             {
                 if ( isChecked )
                 {
                     rb1.setChecked(false);
                     rb2.setChecked(false);
                     rb4.setChecked(false);
                 }
             }
          });
      rb4.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){
          @Override
          public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
             {
                 if ( isChecked )
                 {
                     rb1.setChecked(false);
                     rb3.setChecked(false);
                     rb2.setChecked(false);
                 }
             }
          });
     

    builder.setPositiveButton("OK", new DialogInterface.OnClickListener(){
    public void onClick(DialogInterface dialog, int whichButton){
    String ddst;
    ddst = edit_ddst.getText().toString();
    if (ddst=="") {
      ddst="Drive";
      }else {
      if (rb1.isChecked()){
      ddst="H"+ddst;
      }
      if (rb2.isChecked()){
    ddst="L"+ddst;
    }
      if (rb3.isChecked()){
    ddst="R"+ddst;
    }
      if (rb4.isChecked()){
    ddst="M"+ddst;
    }
      }
    String pdst;
   
    pdst = edit_pdst.getText().toString();
    if (pdst=="") {
    pdst="PutDst";
    }
    b.setText(ddst+"\n"+pdst);
   
    // do something
    // lbl_platz = (TextView) findViewById(R.id.lbl_courseName);
    // lbl_platz.setText(value);
    }
   
   
    });
   
    builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener(){
    public void onClick(DialogInterface dialog, int whichButton){
    // do nothing
   
    }
    });
   
   
    builder.show();
    }

Mittwoch, 28. November 2012

Wie erstelle ich ein Custom Control mit Visual Studio in Visual Basic?

Ich habe es endlich geschafft und mein erstes eigenes Control erstellt.
Ich nutze dazu folgendes Tutorial http://www.codeproject.com/Articles/2016/Writing-your-Custom-Control-step-by-step?msg=4438543#xx4438543xx , welches allerdings in C# und auf Englisch ist.

Also dazu hier von mir ein kleines Tutorial in VB und deutsch:

Was wird draus?

Es soll ein zweifarbiger Button werden. Die Farben können in Ihrer Transparenz verändert werden. Es soll die Möglichkeit geben, das sich die Farben vertauschen, wenn man mit der Maus über den Button fährt.
  1. Das Projekt
    Neues Projekt erstellen
    Menü Datei -> Neues Projekt
    Unter Visual Basic -> Windows -> und rechts Windows Forms Steuerelementbibliothek auswählen
    Name vergeben , Speicherort festlegen -> OK
    Im ProjektmappenExplorer UserControl1.vb markieren und mit Entf Taste löschen
    Über das Menü Projekt -> Neues Element hinzufügen
    Im Dialog nun das Benutzerdefinierte Steuerelement auswählen -> Namen vergeben, bei mir ist es CuteButton -> Hinzufügen
    Im Projektmappenexplorer das Symbol für Alle Dateien anzeigen klicken
    es sollte nun unter der CuteButton.vb noch die CuteButton.Designer.vb Datei erscheinen
    Diese verändert man nun folgendermaßen:
    Die Zeile (dritte von oben)
    Inherits System.Windows.Forms.Control
    wird nun abgeaendert in
    Inherits System.Windows.Forms.Button
  2. Der Code
    Es wird jetzt nur noch die Datei CuteButton.vb verändert.
    Am Anfang sieht sie so aus:
Public Class cuteButton

Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
MyBase.OnPaint(e)

'Benutzerdefinierten Zeichnungscode hier einfügen
End Sub
End Class

Am Ende sieht es dann so aus:


Imports System.ComponentModel

Public Class cuteButton
  Private Property m_color1 As Color = Color.LightGreen
  Private Property m_color2 As Color = Color.DarkBlue
  Private Property m_color1Transparent As Integer = 64
  Private Property m_color2Transparent As Integer = 64
  Private Property m_Gradient As Single
  Private Property m_SwitchAtMouseOver As Boolean
  Private Property m_Text As String
  Private Property m_TextAlignment As ContentAlignment = ContentAlignment.MiddleCenter

  <Description("Gets and sets CuteButtons textalignment.")> _
  Public Property CuteTextAlignment() As ContentAlignment
    Get
      Return m_TextAlignment
    End Get
    Set(ByVal value As ContentAlignment)
      m_TextAlignment = value
      Invalidate()
    End Set
  End Property

  <Description("Gets and sets CuteButtons text.")> _
  Public Property CuteText() As String
    Get
      Return m_Text
    End Get
    Set(ByVal value As String)
      m_Text = value
      Invalidate()
    End Set
  End Property

  <Description("Gets and sets if the CuteColors are switched when the Mouse is over the CuteButton.")> _
  Public Property CuteMouseOver() As Boolean
    Get
      Return m_SwitchAtMouseOver
    End Get
    Set(ByVal value As Boolean)
      m_SwitchAtMouseOver = value
      Invalidate()
    End Set
  End Property

  <Description("Gets and sets the first gradient color")> _
  Public Property CuteColor1() As Color
    Get
      Return m_color1
    End Get
    Set(ByVal value As Color)
      m_color1 = value
      Invalidate()
    End Set
 End Property

  <Description("Gets and sets the second gradient color")> _
  Public Property CuteColor2() As Color
    Get
      Return m_color2
    End Get
    Set(ByVal value As Color)
      m_color2 = value
      Invalidate()
    End Set
  End Property
 
  <Description("Gets and sets the transparency for the first gradient color (Vals between 0 and 255 allowed)")> _
  Public Property CuteTransparent1() As Integer
    Get
      Return m_color1Transparent
    End Get
    Set(ByVal value As Integer)
      m_color1Transparent = value
      'Beschränkung der eingebbaren Werte, da es ohne zu Fehlern kommen kann

      If m_color1Transparent > 255 Then
         m_color1Transparent = 255
      End If
      If m_color1Transparent < 0 Then
         m_color1Transparent = 0
      End If
      Invalidate()
    End Set
  End Property

  <Description("Gets and sets the transparency for the second gradient color (Vals between 0 and 255 allowed)")> _
  Public Property CuteTransparent2() As Integer
    Get
      Return m_color2Transparent
    End Get
    Set(ByVal value As Integer)
      m_color2Transparent = value
      If m_color2Transparent > 255 Then
         m_color2Transparent = 255
      End If
      If m_color2Transparent < 0 Then
         m_color2Transparent = 0
      End If
      Invalidate()
    End Set
  End Property

  <Description("Gets and sets the angle for the gradient colors (Vals between 0 and 360 allowed)")> _
  Public Property CuteGradient() As Single
    Get
      Return m_Gradient
    End Get
    Set(ByVal value As Single)
      m_Gradient = value
      If m_Gradient > 360 Then
         m_Gradient = 360
      End If
      If m_Gradient < 0 Then
         m_Gradient = 0
      End If
      Invalidate()
    End Set
  End Property

  Private Sub XB_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.MouseEnter
    Dim oldcolor As Color
    If m_SwitchAtMouseOver = True Then
       oldcolor = m_color1
       m_color1 = m_color2
       m_color2 = oldcolor
    End If
  End Sub

  Private Sub XB_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.MouseLeave
    Dim oldcolor As Color
    If m_SwitchAtMouseOver = True Then
       oldcolor = m_color1
       m_color1 = m_color2
       m_color2 = oldcolor
    End If
  End Sub
 
  Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
MyBase.OnPaint(e)
  Dim c1, c2 As Color
  Dim r As Rectangle
  Dim style As New StringFormat()
  'AusgangsStyle

  style.Alignment = StringAlignment.Center
  style.LineAlignment = StringAlignment.Center

  'Style in Abhängigkeit des Eingstellten Properies CuteTextAlignment
  Select Case m_TextAlignment
    Case ContentAlignment.MiddleLeft
      style.Alignment = StringAlignment.Near
      style.LineAlignment = StringAlignment.Center
    Case ContentAlignment.BottomLeft
      style.Alignment = StringAlignment.Near
      style.LineAlignment = StringAlignment.Far
    Case ContentAlignment.TopLeft
      style.Alignment = StringAlignment.Near
      style.LineAlignment = StringAlignment.Near
    Case ContentAlignment.BottomRight
      style.Alignment = StringAlignment.Far
      style.LineAlignment = StringAlignment.Far
    Case ContentAlignment.MiddleRight
      style.Alignment = StringAlignment.Far
      style.LineAlignment = StringAlignment.Center
    Case ContentAlignment.TopRight
      style.Alignment = StringAlignment.Far
      style.LineAlignment = StringAlignment.Near
    Case ContentAlignment.BottomCenter
      style.Alignment = StringAlignment.Center
      style.LineAlignment = StringAlignment.Far
    Case ContentAlignment.MiddleCenter
      style.Alignment = StringAlignment.Center
      style.LineAlignment = StringAlignment.Center
    Case ContentAlignment.TopCenter
      style.Alignment = StringAlignment.Center
      style.LineAlignment = StringAlignment.Near
  End Select
  'Benutzerdefinierten Zeichnungscode hier einfügen
  'Create two semi transparent colors
  c1 = Color.FromArgb(m_color1Transparent, m_color1)
  c2 = Color.FromArgb(m_color2Transparent, m_color2)
  'Clientrectangel in r ablegen

  r = Me.ClientRectangle
  'Lineargradientbrush b in Form des Clientrechtecks mit den Farben c1 und c2 und dem Winkel m_Gradient
  Dim b As New System.Drawing.Drawing2D.LinearGradientBrush(r, c1, c2, m_Gradient)
  e.Graphics.FillRectangle(b, r)

  'Hier wird noch einmal der CuteText ueber den Button gezeichnet, da der Original Button Text hinter dem Brush b verschwindet. Also wenn die Farben nicht transparent sind, ist der normale Button Text gar nicht lesbar. Style bestimmt die Position des CuteTextes.
  e.Graphics.DrawString(m_Text, MyBase.Font, New SolidBrush(MyBase.ForeColor), r, style)
  b.Dispose()
 End Sub
End Class

Nun muss das Ganze noch über das Menü Erstellen, erstellt werden.

Die Zuweisung in die Toolbox dann über Rechtsklick in gewählter Unterkategorie -> Elemente auswählen -> unter .NET auf durchsuchen klicken -> hier nun die erstellte dll auswählen (unter bin/debug im Verzeichnis des Projektes) Sollte das Element in der Toolbox ausgegraut/nicht verfügbar sein, muss geprüft werden ob das Projekt in mindestens der gleichen Version (.Net Framework) ist, die auch zur Erstellung des Custom Controls verwendet worden ist. Einstellen lässt sich das über die Projekteingenschaften im Reiter Kompilieren. Hier muss der Dialog über den Button Erweiterte Kompilierungsoptionen aufgerufen werden,